iOS語言本地化

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.完成了,運行程序將默認語言改為中文即可看到設置字樣

二、本地化代碼中的字符串###

  1. 熟悉 NSLocalizedString的用法:參數一為key,參數二為注釋;

  2. 在代碼中,任何需要本地化的字符串都用NSLocalizedString包裹起來,如輸出Test字符串:NSLog(NSLocalizedString("Test", "輸出Test字符串"));

  3. 導出需要本地化的字符串,有兩種方法:
    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/
    說明:-print0xargs的作用可以參考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]

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容