iOS App國際化與本地化,讓你的app同時(shí)支持多國語言

前言

也可以關(guān)注我的個(gè)人博客

??最近看了一下關(guān)于app本地化的一些嘗試,這里做了一些最基礎(chǔ)的總結(jié)。
??大致分三點(diǎn)來介紹:

  • Bundle display name的本地化
  • StoryBoard的本地化
  • app內(nèi)字符串的本地化

Bundle display name的本地化

首先需要倒入需要的語言包,如下圖所示:

導(dǎo)入語言

其次新建一個(gè)名為InfoPlist.strings的文件,注意大小寫:

新建InfoPlist

點(diǎn)擊這個(gè)文件右側(cè)展開,點(diǎn)擊localize…,把剛才添加的語言設(shè)置按需選擇:

點(diǎn)擊localize…

選擇

在相應(yīng)的strings文件里填寫app不同語言的名稱,分號千萬不能漏掉,否則編譯不通過。如果不知道字段的可以看下圖:

英語語言下:

"CFBundleDisplayName" = "Tea tree mushroom";
英語

簡體中文語言下:

"CFBundleDisplayName" = "茶樹菇";
簡體中文

日語語言下:

"CFBundleDisplayName" = "茶の木キノコ";
日語

韓語語言下:

"CFBundleDisplayName" = "? ?? 菇";
韓語

StoryBoard的本地化

這個(gè)設(shè)置跟上面差不多,同樣點(diǎn)擊需要本地化的sb文件,點(diǎn)擊localize…,選擇好之后會出現(xiàn)相應(yīng)的strings文件:

如果sb文件之前是有編輯過的,就是上面已經(jīng)有顯示控件的,生成string文件的時(shí)候會自動有 key-value的值,如下圖:

如果在以后添加了新的控件,沒有自動生成怎么辦?別著急。咱們仔細(xì)看一下這個(gè)規(guī)則就知道了。首先打開sb文件顯示xml代碼:

源代碼

這里搜到這個(gè)id對應(yīng)的button,JNm-54-QzN.normalTitle拿到文字進(jìn)行修改即可,下次新其他控件按照這個(gè)規(guī)則直接可以改,這里normalTitle等屬性可以自行網(wǎng)上查到。

這里需要注意一點(diǎn),如果是sb的約束可能需要注意不同語言文字的長度問題。

app內(nèi)字符串的本地化

本地化的文件需要建一個(gè)名為Localizable.strings,注意大小寫。同理需要選擇右側(cè)localize…,這里就不再啰嗦了。然后就可以用key-value的形式定義不同語言下的字符串,在需要使用的文件中利用:

public func NSLocalizedString(_ key: String, tableName: String? = default, bundle: Bundle = default, value: String = default, comment: String) -> String

讀取字符串顯示在相應(yīng)的控件上。

這里總結(jié)了最基礎(chǔ)的本地化需要的操作,如果有更高級的用法,歡迎大家一起分享。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容