? ? ? ?在日常開發(fā)中,語言國際化是一個最基本的用戶需求,無論是開發(fā)團體項目還是開發(fā)獨立框架掐暮,為了方便維護代碼便于交流、有更好的用戶體驗政钟、更多的語言適配路克,那就需要對app的名稱和內(nèi)容進行語言國際化配置樟结。
何為語言國際化,通俗的講就是你的app無論是誰精算,中國人瓢宦、美國人、日本人都能看得懂并能使用灰羽,比如“中國”所對應的英文--中文簡體--中文繁體就是:China--中國--中國驮履。
一、關鍵名詞解釋
這些文件其實都是一個字典廉嚼。
1疲吸、Localizable.strings
多語言文件,用于本地化App內(nèi)容的字符串前鹅,用戶創(chuàng)建時必須這樣命名摘悴,與之對應的調(diào)用方法是(這個宏在Foundation框架中):
#define NSLocalizedString(key, comment) \
[NSBundle.mainBundle localizedStringForKey:(key) value:@"" table:nil]
例如:label.text = NSLocalizedString(@"labelText", @"中國");
2、Language.strings
同樣是多語言文件舰绘,用于本地化APP內(nèi)容的字符串蹂喻,不同于Localizable的是,用戶創(chuàng)建時可以隨意取名捂寿,與之對應的方法是:
#define NSLocalizedStringFromTable(key, tbl, comment) \
[NSBundle.mainBundle localizedStringForKey:(key) value:@"" table:(tbl)]
例如:label.text = NSLocalizedStringFromTable(@"labelText",@"Language",@"中國");
3口四、InfoPlist.strings
多語言文件,用于本地化App名稱的字符串秦陋,創(chuàng)建時必須這樣命名蔓彩,不同于以上兩種的是,不需要調(diào)用方法驳概,但需要關鍵key:CFBundleDispalyName赤嚼。
二、app內(nèi)容語言國際化
通過創(chuàng)建一個label控件說明顺又。
1)更卒、Localizable.strings實現(xiàn)
彈出這個界面時直接點擊Finish,直到添加成功兩個“中文簡體與繁體”稚照,如果你想要對應的語言蹂空,就挑選合適的語言進行添加,另外模擬器默認是英文果录。添加完的界面是這樣的:
之后就創(chuàng)建Localizable.strings文件上枕,先選取:
文件創(chuàng)建成功后再點擊到這個文件下弱恒,打開Xcode右工具欄:
點擊Localize...
最好選擇English辨萍,再點擊Localize,設置成功后把中文簡體與繁體勾上斤彼,如圖
完成后接下來就是寫代碼了分瘦。
模擬器語言在英文狀態(tài),默認顯示的效果是這樣的:
修改代碼:
給strings文件添加鍵值(切記琉苇,代碼的所有鍵是相同的)嘲玫,每個語言下都要修改:
切換模擬器語言狀態(tài)到簡體中文,運行結果是:
2)并扇、Language.strings實現(xiàn)
文件名隨便命名去团,雖然隨便,但也要符合命名規(guī)范:
步驟同1)的所有步驟穷蛹,只是代碼需要修改為土陪,運行的效果是一樣的:
三、app名稱語言國際化
步驟相同肴熏,但創(chuàng)建的文件名必須是InfoPlist.strings且不需要寫任何代碼:
APP名稱的變化是:
我在項目中就是這么實現(xiàn)語言國際化的鬼雀,如果有不妥之處請大家指出,謝謝蛙吏。