iOS語言本地化

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è)置字樣

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

  1. 熟悉 NSLocalizedString的用法:參數(shù)一為key梧乘,參數(shù)二為注釋杠人;

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

  3. 導(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/
    說明:-print0xargs的作用可以參考find命令的說明徙融, -o 后面參數(shù)指定目標(biāo)路徑

    b. 選擇Xcode上左邊的Navigator選擇項(xiàng)目洒缀,然后在菜單欄上選擇 Editor -> Export For Localization...,然后指定文件目錄(暫時(shí)指定到桌面吧)欺冀。

    導(dǎo)出本地化文件

從桌面路徑可以看到生成的文件夾树绩,打開文件夾,里面有個(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)入文件赡鲜。

導(dǎo)入文件

然后會(huì)看到剛才修改的內(nèi)容和之前文件內(nèi)容的對比空厌,點(diǎn)擊import即可庐船。

確認(rèn)導(dǎo)入

導(dǎo)入成功后,即可看到我們本地化的文件嘲更,運(yùn)行程序筐钟,一切順利:


控制臺輸出內(nèi)容
模擬器上

這就完成了本地化了。

參考文章:
[https://blog.chinaunix.net/uid-20082146-id-83489.html]

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末赋朦,一起剝皮案震驚了整個(gè)濱河市篓冲,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌宠哄,老刑警劉巖壹将,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奢方,死亡現(xiàn)場離奇詭異为鳄,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)呛占,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門承粤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來暴区,“玉大人,你說我怎么就攤上這事辛臊∠闪唬” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵彻舰,是天一觀的道長伐割。 經(jīng)常有香客問我,道長淹遵,這世上最難降的妖魔是什么口猜? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任负溪,我火速辦了婚禮透揣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘川抡。我一直安慰自己辐真,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布崖堤。 她就那樣靜靜地躺著侍咱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪密幔。 梳的紋絲不亂的頭發(fā)上楔脯,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天,我揣著相機(jī)與錄音胯甩,去河邊找鬼昧廷。 笑死堪嫂,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的木柬。 我是一名探鬼主播皆串,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼眉枕!你這毒婦竟也來了恶复?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤速挑,失蹤者是張志新(化名)和其女友劉穎谤牡,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體姥宝,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拓哟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了伶授。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片断序。...
    茶點(diǎn)故事閱讀 38,617評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖糜烹,靈堂內(nèi)的尸體忽然破棺而出违诗,到底是詐尸還是另有隱情,我是刑警寧澤疮蹦,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布诸迟,位于F島的核電站,受9級特大地震影響愕乎,放射性物質(zhì)發(fā)生泄漏阵苇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一感论、第九天 我趴在偏房一處隱蔽的房頂上張望绅项。 院中可真熱鬧,春花似錦比肄、人聲如沸快耿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽掀亥。三九已至,卻和暖如春妥色,著一層夾襖步出監(jiān)牢的瞬間搪花,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留撮竿,地道東北人丁稀。 一個(gè)月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像倚聚,于是被迫代替她去往敵國和親线衫。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容