標籤:使用 原理 通用 boa value 應用 前言 cal view
- 前言
- 語言本地化,又叫做語言國際化。
- 是指根據使用者作業系統的語言設定,自動將應用程式的語言設定為和使用者作業系統語言一致的語言。
- 往往一些應用程式需要提供給多個國家的人群使用,或者一個國家有多種語言,這就要求應用程式所展示的文字、圖片等資訊,能夠讓講不同語言的使用者讀懂、看懂。
- 進而提出為同一個應用程式適配多種語言,也即是國際化。
- 語言國際化之所以又叫做語言本地化,這是站在每個使用者的角度而言的,是指能夠讓使用者本地、本土人群能夠看懂的語言資訊,顧名思義,語言本地化。其實語言本地化 == 語言國際化!
1、前期準備配置需要國際化的語言
- 配置需要國際化的語言,這也是國際化之前的準備工作,無論我們是國際化App名稱、代碼中的字串、圖片、還是storyboard和xib,都需要進行這一步的準備工作(一個項目中需要且僅需要配置一次)。
- 選中project->Info->Localizations,然後點擊"+",添加需要國際化/本地化的語言,如(預設需要勾選Use Base Internationalization):
- 此處以添加法語為例,如:
- 彈出如下對話方塊,直接點擊finish,如:
- 同理,添加簡體中文、繁體中文、韓語,最終結果如:
- 備忘: “zh-Hans”和“zh-Hant”是簡體中文和繁體中文的縮寫。這是標準的縮寫。H可大寫也可小寫。"en"是英語的縮寫。ko是韓語的縮寫,fr是法語的縮寫。其他語言請百度各國語言縮寫即可查詢。
2、各種國際化
- (一)應用程式名稱本地化/國際化
- (二)代碼中字串的本地化
- (三)多人開發情況下的字串本地化
- (四)圖片本地化
3、查看/切換本地語言
- 原理:應用啟動時,首先會讀取NSUserDefaults中的key為AppleLanguages對應的value,該value是一個String數組,也就是說,我們訪問這個名為AppleLanguages的key可以返回一個string數組,該數組儲存著APP支援的語言列表,數組的第一項為APP當前預設的語言。
#import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; NSArray *languages = [[NSUserDefaults standardUserDefaults] valueForKey:@"AppleLanguages"]; NSString *currentLanguage = languages.firstObject; NSLog(@"模擬器當前語言:%@",currentLanguage); } @end
- 控制台列印結果:
- 同理,既然我們可以通過AppleLanguages這個key從NSUserDefaults中取出語言數組,那麼我們也可以給AppleLanguages這個key賦值來達到切換本地語言的效果,從此以後,我們就無需頻繁的去模擬器的設定->通用->語言與地區 中切換語言。
#import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // 切換語言前 NSArray *langArr1 = [[NSUserDefaults standardUserDefaults] valueForKey:@"AppleLanguages"]; NSString *language1 = langArr1.firstObject; NSLog(@"模擬器語言切換之前:%@",language1); // 切換語言 NSArray *lans = @[@"en"]; [[NSUserDefaults standardUserDefaults] setObject:lans forKey:@"AppleLanguages"]; // 切換語言後 NSArray *langArr2 = [[NSUserDefaults standardUserDefaults] valueForKey:@"AppleLanguages"]; NSString *language2 = langArr2.firstObject; NSLog(@"模擬器語言切換之後:%@",language2); } @end
- 回想一下,我在上面的技巧一節中提過:切換語言無需在模擬器中設定,只需要在Xcode中進行如下設定: Edit->Scheme->Run->Arguments Passed On Launch ->-AppleLanguages (語言代碼)。其實本質上就是給NSUserDefaults中名為AppleLanguages的key賦值。
3分鐘實現iOS語言本地化/國際化(圖文詳解)