什么是本地化處理?
本地化處理就是我們的應(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),這就是本地化處理