Brief###
iOS實現語言的本地化很簡單,這里只是為了簡單的記錄一下過程。
一、本地化storyboard上的字符串###
1.創建應用(如項目名為:LocalizationDemo)
2.添加本地化文件
3.往Main.storyboard上添加一個label
并設置內容為Setting
這時,我們查看Main.strings(Chinese(Simplified))文件,里面是空。
4.為了讓文件自動填充內容,有個小技巧:選擇Main.storyboard,然后在右邊的 Utilities 中選擇 Show the file inspector ,然后在Localization項將Localizable Strings切換到 Interface Builder Storyboard,之后再重新切換回去。
再次查看文件,這時已經有如下內容了
/* Class = "UILabel"; text = "Setting"; ObjectID = "cWa-zv-jKP"; */
"cWa-zv-jKP.text" = "Setting";
5.將Setting修改為設置
/* Class = "UILabel"; text = "Setting"; ObjectID = "cWa-zv-jKP"; */
"cWa-zv-jKP.text" = "設置";
6.完成了,運行程序將默認語言改為中文即可看到設置字樣
二、本地化代碼中的字符串###
熟悉
NSLocalizedString
的用法:參數一為key,參數二為注釋;在代碼中,任何需要本地化的字符串都用
NSLocalizedString
包裹起來,如輸出Test
字符串:NSLog(NSLocalizedString("Test", "輸出Test字符串"));
-
導出需要本地化的字符串,有兩種方法:
a. 通過genstrings
命令來生成文件:打開終端;用cd
命令進入到項目目錄中;執行genstrings
命令genstrings *.swift
(如果使用的語言是Objective-C,則將 .swift 改為 .m 即可)。需要注意的是genstrings
命令不會遍歷子文件夾,換句話說,如果swift文件放在多重文件夾當中,那這些文件將不會被訪問到,所以最好的方法是使用find
命令先將需要的文件找到,然后再使用genstrings
命令來生成文件。如:
find ./ -name '*.swift' -print0 | xargs -0 genstrings -o ./zh-Hans.lproj/
說明:-print0
和xargs
的作用可以參考find
命令的說明,-o
后面參數指定目標路徑b. 選擇Xcode上左邊的Navigator選擇項目,然后在菜單欄上選擇 Editor -> Export For Localization...,然后指定文件目錄(暫時指定到桌面吧)。
導出本地化文件
從桌面路徑可以看到生成的文件夾,打開文件夾,里面有個后綴名為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
標簽下的內容就是要本地化的字符串,taget
標簽就是本地化后的字符串,note
標簽即是注釋。我們發現有些source
下沒有taget
標簽,我們可以自己加上去,并寫上本地化后的字符串,其他taget
標簽的內容也修改成我們需要的字符串。
修改后進行保存。然后跟上面同樣的步驟,我們選擇import Localization...
導入文件。
然后會看到剛才修改的內容和之前文件內容的對比,點擊import
即可。
導入成功后,即可看到我們本地化的文件,運行程序,一切順利:
這就完成了本地化了。
參考文章:
[https://blog.chinaunix.net/uid-20082146-id-83489.html]