iOS國(guó)際化簡(jiǎn)單操作

iOS國(guó)際化簡(jiǎn)單操作

國(guó)際化后的App可以根據(jù)手機(jī)當(dāng)前系統(tǒng)語(yǔ)言來(lái)切換不同的語(yǔ)言來(lái)適應(yīng)不同的語(yǔ)言使用人群, 所以iOS國(guó)際化也可以稱(chēng)作本地化, 是站在使用者角度上講的.

只需要簡(jiǎn)單的幾步便可以快速使自己的App

配置需要國(guó)際化的語(yǔ)言

配置需要國(guó)際化的語(yǔ)言,這也是國(guó)際化之前的準(zhǔn)備工作,無(wú)論我們是國(guó)際化App名稱(chēng)、代碼中的字符串、圖片、還是storyboard和xib,都需要進(jìn)行這一步的準(zhǔn)備工作(一個(gè)項(xiàng)目中需要且僅需要配置一次)。
選中project->Info->Localizations,然后點(diǎn)擊"+",添加需要國(guó)際化/本地化的語(yǔ)言,如下圖(默認(rèn)需要勾選Use Base Internationalization)


此處以添加法語(yǔ)為例,如下圖


彈出如下對(duì)話(huà)框,直接點(diǎn)擊finish,如下圖:


同理,添加簡(jiǎn)體中文、繁體中文、韓語(yǔ),最終結(jié)果如下圖:


備注: “zh-Hans”和“zh-Hant”是簡(jiǎn)體中文和繁體中文的縮寫(xiě)。這是標(biāo)準(zhǔn)的縮寫(xiě)。H可大寫(xiě)也可小寫(xiě)。"en"是英語(yǔ)的縮寫(xiě)。ko是韓語(yǔ)的縮寫(xiě),fr是法語(yǔ)的縮寫(xiě)。其他語(yǔ)言請(qǐng)百度各國(guó)語(yǔ)言縮寫(xiě)即可查詢(xún)。

應(yīng)用名稱(chēng)本地化/國(guó)際化

應(yīng)用名稱(chēng)本地化,是指同一個(gè)App的名稱(chēng),在不同的語(yǔ)言環(huán)境下(也就是手機(jī)設(shè)備的語(yǔ)言設(shè)置)顯示不同的名稱(chēng)。比如,微信在簡(jiǎn)體中文環(huán)境下App名稱(chēng)顯示為“微信”,在英語(yǔ)環(huán)境下顯示為“weChat”。下面就開(kāi)始進(jìn)行應(yīng)用名稱(chēng)本地化。
選中Info.plist,按下鍵盤(pán)上的command + N,選擇Strings File(iOS->Resource->Strings File)


文件名字命名為InfoPlist,且必須是這個(gè)名字(因每個(gè)人電腦設(shè)置差異,此處本人電腦沒(méi)有顯示strings后綴名):


點(diǎn)擊create后,Xcode左側(cè)導(dǎo)航列表就會(huì)出現(xiàn)名為InfoPlist.strings的文件,如下圖:


選中InfoPlist.strings,在Xcode的File inspection(Xcode右側(cè)文件檢查器)中點(diǎn)擊Localize,目的是選擇我們需要本地化的語(yǔ)言,如下圖:
注意:在點(diǎn)擊Localize之前,一定要保證我們已經(jīng)添加了需要本地化的語(yǔ)言,也就是上面配置需要國(guó)際化的語(yǔ)言那一步(步驟:project->Info->Localizations,然后點(diǎn)擊"+",添加需要國(guó)際化/本地化的語(yǔ)言)。


點(diǎn)擊Localize后,會(huì)彈出一個(gè)對(duì)話(huà)框,展開(kāi)對(duì)話(huà)框列表,發(fā)現(xiàn)下拉列表所展示的語(yǔ)言正是我們?cè)谏厦媾渲玫男枰獓?guó)際化的語(yǔ)言,選擇我們需要本地化的語(yǔ)言,然后點(diǎn)擊對(duì)話(huà)框的Localize按鈕,如下圖:



注意:如果我們沒(méi)有在 PROJECT 中配置需要國(guó)際化的語(yǔ)言(project->Info->Localizations,然后點(diǎn)擊"+"),上圖下拉列表中將只會(huì)出現(xiàn)"Base"和"English"選項(xiàng),English語(yǔ)言是系統(tǒng)默認(rèn)的語(yǔ)言,其他需要國(guó)際化的語(yǔ)言(例如中文簡(jiǎn)體、法語(yǔ))必須通過(guò)上面的配置本地化語(yǔ)言那一步手動(dòng)添加。
然后我們發(fā)現(xiàn)Xcode右側(cè)的File inspection變成了下圖的樣式:


接下來(lái),勾選French、Chinese(zh-Hans)、Chinese(zh-Hant)、Korean,如下圖:


此時(shí),Xcode左側(cè)的InfoPlist.stirings左側(cè)多了一個(gè)箭頭,點(diǎn)擊箭頭可以展開(kāi),如下圖所示:


從上圖可以看出,InfoPlist.strings文件下包含了English、French、Chinese(Simplified)、Chinese(Traditional)、Korean這五種語(yǔ)言的文件。
原理:程序啟動(dòng)時(shí),會(huì)根據(jù)操作系統(tǒng)設(shè)置的語(yǔ)言,自動(dòng)加載InfoPlist.strings文件下對(duì)應(yīng)的語(yǔ)言文件,然后顯示應(yīng)用程序的名字。
接下來(lái),我們分別用不同的語(yǔ)言給InfoPlist.strings下的文件設(shè)置對(duì)應(yīng)的名字。
(1)在InfoPlist.strings(english)中加入如下代碼:

// Localizable App Name是App在英語(yǔ)環(huán)境環(huán)境下顯示的名稱(chēng)
CFBundleDisplayName = "Localizable App Name";

備注:CFBundleDisplayName可以使用雙引號(hào),也可以不使用雙引號(hào)!


其他語(yǔ)言方法一樣的操作方法

修改模擬器語(yǔ)言環(huán)境為English。App名稱(chēng)如下圖:



修改模擬器語(yǔ)言環(huán)境為Chinese(Simplified)。App名稱(chēng)如下圖:


代碼中字符串的本地化

所謂字符串本地化,就是指App內(nèi)的字符串在不同的語(yǔ)言環(huán)境下顯示不同的內(nèi)容。比如,"主頁(yè)"這個(gè)字符串在中文語(yǔ)言環(huán)境下顯示“主頁(yè)”,在英語(yǔ)環(huán)境下顯示“home”。下面就開(kāi)始進(jìn)行字符串本地化。
其實(shí)字符本地化和App名稱(chēng)本地化過(guò)程如出一轍,只是創(chuàng)建的文件名成不一樣(連同后綴一起,文件名必須是Localizable.strings),其他步驟完全相同。為了能夠讓大家徹底了解,此處還是會(huì)把步驟一一貼出來(lái)。
和應(yīng)用名稱(chēng)本地化一樣,首先需要command + N,選擇iOS -> Resource -> Strings File


文件名必須命名為L(zhǎng)ocalizable
備注:因本人電腦取消隱藏文件后綴名,所以會(huì)自動(dòng)補(bǔ)全.strings后綴名。


文件創(chuàng)建成功,查看Xcode左側(cè)導(dǎo)航列表,發(fā)現(xiàn)多了一個(gè)名為L(zhǎng)ocalizable.strings的文件,如下圖:


選中Localizable.strings文件,在Xcode的File inspection中點(diǎn)擊Localize,目的是選擇我們需要本地化的語(yǔ)言(和本地化App名稱(chēng)同理),如下圖:


后面的方法和本地化APP名稱(chēng)的步驟類(lèi)似
不同的是要注意鍵值對(duì)的對(duì)應(yīng)



如果通過(guò)鍵找不到對(duì)應(yīng)的值, 則默認(rèn)使用鍵的名稱(chēng)
所以如果使用英語(yǔ)作為key的話(huà), 英語(yǔ)的本地化文件是不需要寫(xiě)任何東西的

本地化代碼中的字符串,如下圖:


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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