一、概述
應(yīng)用程序本地化,從名字理解就是,應(yīng)用程序App的入鄉(xiāng)隨俗化處理,比喻說App的名字,在手機(jī)設(shè)置語言為簡體中文的時候,App名字也是簡體中文,在手機(jī)設(shè)置語言為英文的時候,名字則變成英文。這樣說,就能理解本地化是什么東西了。
既然可以對App名字本地化,同樣也可以對其他的內(nèi)容進(jìn)行本地化處理,比喻說圖片、nib文件及指定字符串等。在后面會講述一些常用的本地化處理
開發(fā)中,對項(xiàng)目進(jìn)行本地化處理,不是勾選某個選項(xiàng)就可以了的,需要為項(xiàng)目添加文件,這個文件稱為”本地化文件夾”,文件名后綴為.lproj。下面就開始一步一步講解
二、本地化
先創(chuàng)建一個項(xiàng)目,我這里就寫了一個簡單的項(xiàng)目,兩個界面,demo可以在文章后面下載。新建項(xiàng)目,本地語言默認(rèn)是英文,現(xiàn)在是添加中文本地語言,下面以中文和英文本地化處理為例(當(dāng)然,你也可以添加其他的本地語言,思路是一樣的)
如下圖,找到添加本地語言的位置,Localizations,點(diǎn)擊加號

在展開的選項(xiàng)例表中選擇你需要的處理的語言,這里選擇簡體中文zh-Hans

選擇語言后,會讓你再選擇需要做本地化處理的文件,都勾上就行了(這里既是給項(xiàng)目添加本地語言,也是給你選中文件添加本地化的子文件),勾上以后并確認(rèn)

確認(rèn)以后,可以看到本地語言有兩個了

同時,回到工程我們可以看到,剛才勾選的兩個storyboard文件,都有各自的子文件了,在展開的子文件列表中可以看到多了一個**.string(chinese(Simplified))文件

到這一步,準(zhǔn)備工作做完了。下面開始示例講解
圖片本地化
圖片本地化,就是不同的語言環(huán)境,用不同的圖片,打個比喻說首頁的圖片主題是過年,那么對應(yīng)中國是餃子加鞭炮,而對于英文國家,則是圣誕老人加禮物。當(dāng)然我這里的圖片比較簡單,僅僅是兩張不同的圖片而已
往項(xiàng)目中拖入一張圖片并且寫到界面上(具體怎么拖怎么寫就不說了),然后找到圖片Localization設(shè)置界面,如下圖

點(diǎn)擊上圖中的“Localize...”按鈕,會提示你,選擇對應(yīng)的語言,這里是中文,并確認(rèn)。如下圖

會看到Localization的列表框下面多了幾個選項(xiàng),勾上"English"和"Chinese(Simplifile)",bese可以不用勾,基類,勾上的話和English是一個效果,如圖

可以看到勾上以后,剛才那張圖片也有了子下拉列表,展開可以看到兩個文件,對應(yīng)著中文和英文,如下圖

因?yàn)椋胍獙?shí)現(xiàn)中英文下展示不同的圖片,所以就要提供另外一張圖片到項(xiàng)目中。首先準(zhǔn)備一張圖片,然后在本地化文件@“飛豬.png(Chinese(Simplified))”右鍵,選擇在文件中顯示,如圖

將準(zhǔn)備好圖片替換掉原有的圖片,當(dāng)然名字得是一樣的,我替換的結(jié)果如下

運(yùn)行結(jié)果如下,前提是你的把模擬器設(shè)置成中文和英文各運(yùn)行一次,才能看出區(qū)別


字符串本地化
字符串本地化,就是把在項(xiàng)目中你可以控制或捕捉到的字符串,在不同的語言環(huán)境下將其顯示為不同。在這里我是把界面上的一個label的字符串在不同語言環(huán)境下顯示不同
先創(chuàng)建一個字符串的本地化文件 strings File文件如下圖

將文件保存為Localizable

在項(xiàng)目列表中找到找到剛剛創(chuàng)建的文件,然后點(diǎn)擊右邊的Localize...按鈕,步驟和圖片本地化類似,如下圖

選擇簡體中文即Chinese(Simplified)

勾選Localization列表下的English和Chinese(Simplefied)

可以看到Localizable.strings有兩個子文件,分別對應(yīng)的是簡體中文和英文

在Localizable.strings(Chinese(Simplified))文件中添加代碼labelKey = "簡體中文模式"。如下圖

在Localizable.strings(English)文件中添加代碼labelKey = "英文模式"。如下

在控制器中使用該字符串的地放使用系統(tǒng)的宏NSLocalizedString(key, comment),第一個參數(shù)是本地化字符串的鍵,其實(shí)這個鍵就是本地化文件中的那個“l(fā)abelKey”,第二個參數(shù)是注釋,可忽略。通過這個宏就可以得到對應(yīng)語言環(huán)境下字符串的值。代碼如下
- (void)viewDidLoad {
[super viewDidLoad];
self.label.text = NSLocalizedString(@"labelKey", @"驗(yàn)證不通的語言環(huán)境文字是否改變");
}
在簡體中文環(huán)境下運(yùn)行項(xiàng)目,結(jié)果如下

在英文環(huán)境下運(yùn)行項(xiàng)目,結(jié)果如下

可以看到其中的區(qū)別了。
應(yīng)用程序名字本地化
應(yīng)用程序名稱本地化,就是英文環(huán)境下顯示一個名稱,簡體中文環(huán)境下顯示一個名稱,這里的例子是,分別顯示中文和英文
套路和之前的差不多,簡單說明下
首先要創(chuàng)建一個Strings File文件,如下圖

將名字命名為InfoPlist

添加本地化文件,和之前的一樣,勾選簡體中文和英文


在中英文本地化文件中分別添加應(yīng)用程序的名字,注意應(yīng)用程序名字值對應(yīng)的鍵不能錯,一定是:“CFBundleDisplayName”,如下圖


分別在英文環(huán)境和中文環(huán)境下運(yùn)行項(xiàng)目,結(jié)果如下


這樣就完成了應(yīng)用程序名字的本地化處理
nib文件本地化
nib文件本地化,這里以xib文件為例,要實(shí)現(xiàn)的內(nèi)容是界面上的返回按鈕上的標(biāo)題,在英文下為“back”,在簡體中文下為“返回”。
步驟和上面的類似,先創(chuàng)建本地化文件

這里一定要選擇Base,不要問我為什么,你試試就知道了。然后將三個都勾上,如圖


在兩個文件中更改按鈕標(biāo)題對應(yīng)的字符串,像下圖中那樣更改


分別在簡體中文和英文環(huán)境下運(yùn)行項(xiàng)目,得到結(jié)果如下


到此,應(yīng)用程序本地化處理的講解結(jié)束。其實(shí)套路不復(fù)雜,也可以以此類推,對別的內(nèi)容也可以進(jìn)行本地化處理,自行發(fā)揮
另外補(bǔ)充一點(diǎn)文章開頭說的添加本地化文件,涉及到**.lproj文件。這里說明一下,意思就是只要你添加了本地化文件,比喻說中文或者法語,就會自動生成這個文件,而且每種語言對應(yīng)一個,命名也是自動的。這個文件在項(xiàng)目文件中,打開項(xiàng)目文件就可以看到,如下圖

三、下載
四、推薦閱讀
第一篇:應(yīng)用程序本地化 這篇文章寫的很詳細(xì),除了老一點(diǎn)
第二篇:iOS 設(shè)置App的名稱