Trong khi chờ bài giới thiệu về tool tự động tạo file đa ngôn ngữ cho cả Android và iOS của anh Hieu.TT, (*) tôi đành chắp bút viết bài giới thiệu về việc chuyển đổi ngôn ngữ của Ứng dụng iOS mà không cần phải đổi ngôn ngữ của iPhone.
(*) UPDATE: Bài viết đã được lên sóng GIỚI THIỆU TOOL TỰ ĐỘNG TẠO FILE ĐA NGÔN NGỮ CHO IOS VÀ ANDROID APP
1. Thêm Settings bundle vào project:
Setting Bundle là gì? TL;DR: Setting là một màn hình cài đặt các tùy chọn dành cho từng ứng dụng iOS.
Mở file Root.plist và thêm vào các ngôn ngữ tùy chọn cho dự án.
< ?xml version=”1.0″ encoding=”UTF-8″?>
< !DOCTYPE plist PUBLIC “-//Apple//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd”>
<plist version=”1.0″>
<dict>
<key>PreferenceSpecifiers</key>
<array>
<dict>
<key>Key</key>
<string>app_language</string>
<key>Title</key>
<string>App Language</string>
<key>Type</key>
<string>PSMultiValueSpecifier</string>
<key>DefaultValue</key>
<string>auto</string>
<key>Titles</key>
<array>
<string>Auto</string>
<string>English</string>
<string>Italian</string>
<string>French</string>
<string>Spanish</string>
<string>German</string>
</array>
<key>Values</key>
<array>
<string>auto</string>
<string>en</string>
<string>it</string>
<string>fr</string>
<string>es</string>
<string>de</string>
</array>
</dict>
</array>
<key>StringsTable</key>
<string>Root</string>
</dict>
</plist>
Sau khi chạy ứng dụng, truy cập vào Setting, bạn sẽ nhìn thấy các tùy chọn về ngôn ngữ
2. Cách sử dụng
Bạn cần sử dụng từ khóa app_language để lấy được ngôn ngữ đang được thiết lập
[[NSUserDefaults standardUserDefaults] stringForKey:@”app_language”];
3. Cách dùng được các file ngôn ngữ khác ngoài ngôn ngữ mặc định
Mở main.m và thêm vào:
void configureAppCustomLanguage()
{
NSString *forcedLanguage = [[NSUserDefaults standardUserDefaults] stringForKey:@”app_language”];
NSString *key = @”AppleLanguages”;if ( forcedLanguage && forcedLanguage.length && ![forcedLanguage isEqualToString:@”auto”] )
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[NSLocale preferredLanguages] forKey:@”PreferredLanguages”];
[defaults setObject:[NSArray arrayWithObject:forcedLanguage] forKey:key];
[defaults synchronize];
}
else
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
forcedLanguage = [defaults valueForKey:key];
if ( forcedLanguage )
{
[defaults removeObjectForKey:key];
}[defaults synchronize];
}
}