Brief###
iOS實(shí)現(xiàn)語言的本地化很簡單,這里只是為了簡單的記錄一下過程涂滴。
一友酱、本地化storyboard上的字符串###
1.創(chuàng)建應(yīng)用(如項(xiàng)目名為:LocalizationDemo)
2.添加本地化文件
3.往Main.storyboard上添加一個(gè)label
并設(shè)置內(nèi)容為Setting
這時(shí),我們查看Main.strings(Chinese(Simplified))文件柔纵,里面是空缔杉。
4.為了讓文件自動(dòng)填充內(nèi)容,有個(gè)小技巧:選擇Main.storyboard搁料,然后在右邊的 Utilities 中選擇 Show the file inspector 或详,然后在Localization項(xiàng)將Localizable Strings切換到 Interface Builder Storyboard系羞,之后再重新切換回去。
再次查看文件霸琴,這時(shí)已經(jīng)有如下內(nèi)容了
/* Class = "UILabel"; text = "Setting"; ObjectID = "cWa-zv-jKP"; */
"cWa-zv-jKP.text" = "Setting";
5.將Setting修改為設(shè)置
/* Class = "UILabel"; text = "Setting"; ObjectID = "cWa-zv-jKP"; */
"cWa-zv-jKP.text" = "設(shè)置";
6.完成了椒振,運(yùn)行程序?qū)⒛J(rèn)語言改為中文即可看到設(shè)置字樣
二、本地化代碼中的字符串###
熟悉
NSLocalizedString
的用法:參數(shù)一為key梧乘,參數(shù)二為注釋杠人;在代碼中,任何需要本地化的字符串都用
NSLocalizedString
包裹起來宋下,如輸出Test
字符串:NSLog(NSLocalizedString("Test", "輸出Test字符串"));
-
導(dǎo)出需要本地化的字符串嗡善,有兩種方法:
a. 通過genstrings
命令來生成文件:打開終端;用cd
命令進(jìn)入到項(xiàng)目目錄中学歧;執(zhí)行genstrings
命令genstrings *.swift
(如果使用的語言是Objective-C罩引,則將 .swift 改為 .m 即可)。需要注意的是genstrings
命令不會(huì)遍歷子文件夾枝笨,換句話說袁铐,如果swift文件放在多重文件夾當(dāng)中,那這些文件將不會(huì)被訪問到横浑,所以最好的方法是使用find
命令先將需要的文件找到剔桨,然后再使用genstrings
命令來生成文件。如:
find ./ -name '*.swift' -print0 | xargs -0 genstrings -o ./zh-Hans.lproj/
說明:-print0
和xargs
的作用可以參考find
命令的說明徙融,-o
后面參數(shù)指定目標(biāo)路徑b. 選擇Xcode上左邊的Navigator選擇項(xiàng)目洒缀,然后在菜單欄上選擇 Editor -> Export For Localization...,然后指定文件目錄(暫時(shí)指定到桌面吧)欺冀。
從桌面路徑可以看到生成的文件夾树绩,打開文件夾,里面有個(gè)后綴名為xliff
的文件隐轩,該文件使用的是 xml 格式饺饭。打開文件,我們可以看到所有需要本地化的字符串:
...
<body>
<trans-unit id="cWa-zv-jKP.text">
<source>Setting</source>
<target>Setting</target>
<note>Class = "UILabel"; text = "Setting"; ObjectID = "cWa-zv-jKP";</note>
</trans-unit>
</body>
...
<body>
<trans-unit id="CFBundleName">
<source>$(PRODUCT_NAME)</source>
</trans-unit>
<trans-unit id="CFBundleShortVersionString">
<source>1.0</source>
</trans-unit>
</body>
...
<body>
<trans-unit id="GOOD">
<source>GOOD</source>
<note>輸出GOOD字符串</note>
</trans-unit>
<trans-unit id="Setting">
<source>Setting</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Test">
<source>Test</source>
<note>測試</note>
</trans-unit>
</body>
在source
標(biāo)簽下的內(nèi)容就是要本地化的字符串职车,taget
標(biāo)簽就是本地化后的字符串瘫俊,note
標(biāo)簽即是注釋。我們發(fā)現(xiàn)有些source
下沒有taget
標(biāo)簽悴灵,我們可以自己加上去扛芽,并寫上本地化后的字符串,其他taget
標(biāo)簽的內(nèi)容也修改成我們需要的字符串称勋。
修改后進(jìn)行保存胸哥。然后跟上面同樣的步驟,我們選擇import Localization...
導(dǎo)入文件赡鲜。
然后會(huì)看到剛才修改的內(nèi)容和之前文件內(nèi)容的對比空厌,點(diǎn)擊import
即可庐船。
導(dǎo)入成功后,即可看到我們本地化的文件嘲更,運(yùn)行程序筐钟,一切順利:
這就完成了本地化了。
參考文章:
[https://blog.chinaunix.net/uid-20082146-id-83489.html]