目前,應用展現的全部文本都是以硬編碼字符串存在於Main.storyboard 和 ViewController裏。爲了本地化這些字符串,你須要把它們放在一個單獨的文件中。他將會在包中簡單地引用這些字符串,而不是在你的方法中進行硬編碼。
Xcode使用帶有 .strings 擴展名的文件來存儲和檢索app中使用的全部字符串,以支持每種語言。根據iOS 設備當前使用的語言,代碼中一個簡單的方法調用將會查找並返回要求的字符串。app
建立一個.strings 擴展名的文件,命名爲 Localizable.strings編碼
單擊 Localizable.strings文件,在右邊的屬性欄中設置Localizationspa
選擇一種語言3d
在左邊屬性欄Localization中勾選須要的語言,右邊 Localizable.strings路徑下對應會建立兩個語言文件code
打開對應的語言文件添加代碼,例如:blog
English:圖片
MessageText = "Hello World";字符串
或者string
"MessageText" = "Hello World";it
Chinese:
MessageText = "你好";
或者
"MessageText" = "你好";
ViewController.m
1 - (void)viewDidLoad { 2 [super viewDidLoad]; 3 UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(100, 200, 214, 30)]; 4 // 從語言文件中獲取key爲MessageText的value值 5 label.text = NSLocalizedString(@"MessageText", nil);; 6 [self.view addSubview:label]; 7 }
模擬器語言爲英文狀態下運行:
中文狀態下運行:
在Main.storyboard中拖一個UILabel,text爲BeyBey
在對應的Main.strings(Chinese(Simplified))中寫代碼:
"jC2-j5-VY3.text" = "再見";
jC2-j5-VY3是對應UILabel的ObjectID
英文環境下運行結果:
中文環境下運行:
建立InfoPlist.strings
English:
CFBundleDisplayName = "English";
Chinese:
英文狀態下:
中文狀態下:
第一種:
將圖片名稱存在Localizable.strings對應的文件中,用代碼經過NSLocalizedString獲取圖片名稱。
第二種:
選中圖片,點擊右側屬性的Localization,選中語言文件。
而且在項目文件夾中會出現en.lproj文件和zh-Hans.lproj文件;
en.lproj文件存放的是英文版圖片,zh-Hans.lproj存放的是中文版圖片,中英文圖片名字同樣,咱們在文件夾中直接替換圖片就能夠了