iOS 項(xiàng)目的本地化處理(多語(yǔ)言開發(fā))

什么是本地化處理?

本地化處理就是我們的應(yīng)用程序有可能發(fā)布到世界的很多國(guó)家去,因?yàn)槊總€(gè)國(guó)家應(yīng)用的語(yǔ)言是不一樣的,所以我們要把我們的應(yīng)用程序的語(yǔ)言要進(jìn)行本地化處理一下。

本地化處理需要處理那些文件?

(1):本地化應(yīng)用程序名稱(我的的項(xiàng)目名稱)

(2):本地化字符串處理(項(xiàng)目中所涉及的字符串)

(3):本地化圖片

(4):XIB文件本地化處理

(5):其他文件

下面進(jìn)行本地化處理:

1 . 設(shè)置我們的工程支持多語(yǔ)言

為什么:因?yàn)橹挥性O(shè)置成支持多語(yǔ)言了,我們才能在展示項(xiàng)目名稱和項(xiàng)目中的字符串等將語(yǔ)言進(jìn)行切換

(1): 首先創(chuàng)建一個(gè)項(xiàng)目,以“蘋果”為項(xiàng)目名做測(cè)試

(2):為工程添加可支持的語(yǔ)言,只有項(xiàng)目具有我們想要用的語(yǔ)言,我們才能講項(xiàng)目切換成這種語(yǔ)言

如圖所示:

2:設(shè)置項(xiàng)目名稱本地化處理

(1):InfoPlist.strings文件是對(duì)我們應(yīng)用程序的名字進(jìn)行管理的

(2):設(shè)置InfoPlist.strings其實(shí)很簡(jiǎn)單,就是借助我們上一步設(shè)置的語(yǔ)言環(huán)境,將我們想要支持的語(yǔ)言添加到InfoPlist.strings文件之下就可以了

(3):如圖所示添加過(guò)程:



(4)接下來(lái)我們只需要將CFBundleDisplayName屬性和它所對(duì)應(yīng)的值分別寫在我們?cè)贗nfoPlist下創(chuàng)建的文件中

例如:

在InfoPlist.strings(English)中我們寫入:CFBundleDisplayName = "apple";

在InfoPlist.strings(Chinese(Simplified))中我們寫入:CFBundleDisplayName = "蘋果";

在InfoPlist.strings(English)中我們寫入:CFBundleDisplayName = "リンゴ";

注意:后面的“”前面不加@

(5):在Info.Plist文件中添加一個(gè)屬性Application has localized display name然后設(shè)置成Boolean類型的Yes就可以了


(6):在模擬器中更改模擬器的語(yǔ)言就會(huì)看到以下三種效果:




3:本地化字符串處理(項(xiàng)目中所涉及的字符串)

提示:本地化字符串處理和2中講的項(xiàng)目名本地化處理基本上是一樣的,只不過(guò)我們需要在創(chuàng)建一個(gè)像Info.Plist文件一樣的文件來(lái)管理我們的本地化字符串

就是創(chuàng)建一個(gè)Localizable.strings文件,然后同樣是在這個(gè)文件夾下創(chuàng)建多種支持語(yǔ)言

(1):創(chuàng)建Localizable.strings文件的方式和上面創(chuàng)建Info.Plist的方式是一樣的,只是文件名不一樣

(2):在Localizable.strings文件下添加支持的語(yǔ)言

如圖所示:


(3):然后我們?cè)贚ocalizable.strings下得各個(gè)文件添加類似于如下的內(nèi)容:

例如:

Localizable.strings(English)中 ? ? ? “Login”=“Login”;

Localizable.strings(Chinese(Simplified)) 中 ? “Login” = “登陸”;

Localizable.strings(Japanese) 中? “Login” = “登録”;

然后有人可能問(wèn)了我們每個(gè)等號(hào)前的"Login"是怎么確定的? :往下看

然后我們?cè)趺从媚兀?/p>

就是每次我們?cè)谟玫轿覀冊(cè)O(shè)定的字符串的時(shí)候不用NSString了,我們需要用到一個(gè)函數(shù)代替它:NSLocalizedString(key, comment)?

例如我們要再一個(gè)Button上設(shè)定主題:button.title = NSLocalizedString(@“Login”, nil);

這個(gè)里面的@“Login”就會(huì)自動(dòng)檢索于設(shè)備相同語(yǔ)言的Localizable.strings下得文件夾,然后在里面找到與@“Login”相同的Key值,然后就輸出出來(lái)

其實(shí)我們?cè)贚ocalizable.strings下得文件夾中設(shè)置的內(nèi)容就像一個(gè)字典一樣,前面是Key值后面是對(duì)應(yīng)的值,然后就是通過(guò)NSLocalizedString(@“Login”, nil);函數(shù)進(jìn)行檢索,將key對(duì)應(yīng)的值返回過(guò)來(lái)。

有人會(huì)文NSLocalizedString(key, comment)中的comment是什么,很明顯根據(jù)字義判斷是注釋的意思

如圖所示:


總結(jié):

其實(shí)很簡(jiǎn)單,就是我們把Localizable.strings下面設(shè)置好我們所需要的語(yǔ)言,然后我們?cè)趯⑽覀冊(cè)陧?xiàng)目中用到的字符串都用"Three"="3";的形式整理到各個(gè)對(duì)應(yīng)的文件里面,然后我們要是用到我們需要的字符串的時(shí)候我們就通過(guò)NSLocalizedString(key, comment)函數(shù)以key值的形式找里面的值,然后將我們自己設(shè)置的語(yǔ)言對(duì)應(yīng)的值展現(xiàn)出來(lái),這就是本地化處理

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

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

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