一遍尺、概述
應(yīng)用程序本地化截酷,從名字理解就是,應(yīng)用程序App的入鄉(xiāng)隨俗化處理乾戏,比喻說App的名字迂苛,在手機設(shè)置語言為簡體中文的時候,App名字也是簡體中文鼓择,在手機設(shè)置語言為英文的時候灾部,名字則變成英文。這樣說惯退,就能理解本地化是什么東西了赌髓。
既然可以對App名字本地化,同樣也可以對其他的內(nèi)容進行本地化處理,比喻說圖片锁蠕、nib文件及指定字符串等夷野。在后面會講述一些常用的本地化處理
開發(fā)中,對項目進行本地化處理荣倾,不是勾選某個選項就可以了的悯搔,需要為項目添加文件,這個文件稱為”本地化文件夾”舌仍,文件名后綴為.lproj妒貌。下面就開始一步一步講解
二、本地化
先創(chuàng)建一個項目铸豁,我這里就寫了一個簡單的項目灌曙,兩個界面,demo可以在文章后面下載节芥。新建項目在刺,本地語言默認是英文,現(xiàn)在是添加中文本地語言头镊,下面以中文和英文本地化處理為例(當然蚣驼,你也可以添加其他的本地語言,思路是一樣的)
如下圖相艇,找到添加本地語言的位置颖杏,Localizations,點擊加號
在展開的選項例表中選擇你需要的處理的語言,這里選擇簡體中文zh-Hans
選擇語言后坛芽,會讓你再選擇需要做本地化處理的文件留储,都勾上就行了(這里既是給項目添加本地語言,也是給你選中文件添加本地化的子文件)靡馁,勾上以后并確認
確認以后欲鹏,可以看到本地語言有兩個了
同時机久,回到工程我們可以看到臭墨,剛才勾選的兩個storyboard文件,都有各自的子文件了膘盖,在展開的子文件列表中可以看到多了一個**.string(chinese(Simplified))文件
到這一步胧弛,準備工作做完了。下面開始示例講解
圖片本地化
圖片本地化侠畔,就是不同的語言環(huán)境结缚,用不同的圖片,打個比喻說首頁的圖片主題是過年软棺,那么對應(yīng)中國是餃子加鞭炮红竭,而對于英文國家,則是圣誕老人加禮物。當然我這里的圖片比較簡單茵宪,僅僅是兩張不同的圖片而已
往項目中拖入一張圖片并且寫到界面上(具體怎么拖怎么寫就不說了)最冰,然后找到圖片Localization設(shè)置界面,如下圖
點擊上圖中的“Localize...”按鈕稀火,會提示你暖哨,選擇對應(yīng)的語言,這里是中文槽驶,并確認瓣戚。如下圖
會看到Localization的列表框下面多了幾個選項让腹,勾上"English"和"Chinese(Simplifile)",bese可以不用勾,基類达布,勾上的話和English是一個效果,如圖
可以看到勾上以后斩熊,剛才那張圖片也有了子下拉列表往枣,展開可以看到兩個文件,對應(yīng)著中文和英文粉渠,如下圖
因為分冈,想要實現(xiàn)中英文下展示不同的圖片,所以就要提供另外一張圖片到項目中霸株。首先準備一張圖片雕沉,然后在本地化文件@“飛豬.png(Chinese(Simplified))”右鍵,選擇在文件中顯示去件,如圖
將準備好圖片替換掉原有的圖片坡椒,當然名字得是一樣的,我替換的結(jié)果如下
運行結(jié)果如下尤溜,前提是你的把模擬器設(shè)置成中文和英文各運行一次倔叼,才能看出區(qū)別
字符串本地化
字符串本地化,就是把在項目中你可以控制或捕捉到的字符串宫莱,在不同的語言環(huán)境下將其顯示為不同丈攒。在這里我是把界面上的一個label的字符串在不同語言環(huán)境下顯示不同
先創(chuàng)建一個字符串的本地化文件 strings File文件如下圖
將文件保存為Localizable
在項目列表中找到找到剛剛創(chuàng)建的文件,然后點擊右邊的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ù)是本地化字符串的鍵辛辨,其實這個鍵就是本地化文件中的那個“l(fā)abelKey”捕捂,第二個參數(shù)是注釋瑟枫,可忽略。通過這個宏就可以得到對應(yīng)語言環(huán)境下字符串的值指攒。代碼如下
- (void)viewDidLoad {
[super viewDidLoad];
self.label.text = NSLocalizedString(@"labelKey", @"驗證不通的語言環(huán)境文字是否改變");
}
在簡體中文環(huán)境下運行項目力奋,結(jié)果如下
在英文環(huán)境下運行項目,結(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)境下運行項目姚淆,結(jié)果如下
這樣就完成了應(yīng)用程序名字的本地化處理
nib文件本地化
nib文件本地化孕蝉,這里以xib文件為例,要實現(xiàn)的內(nèi)容是界面上的返回按鈕上的標題腌逢,在英文下為“back”降淮,在簡體中文下為“返回”。
步驟和上面的類似搏讶,先創(chuàng)建本地化文件
這里一定要選擇Base佳鳖,不要問我為什么,你試試就知道了媒惕。然后將三個都勾上系吩,如圖
在兩個文件中更改按鈕標題對應(yīng)的字符串,像下圖中那樣更改
分別在簡體中文和英文環(huán)境下運行項目妒蔚,得到結(jié)果如下
到此穿挨,應(yīng)用程序本地化處理的講解結(jié)束。其實套路不復雜面睛,也可以以此類推絮蒿,對別的內(nèi)容也可以進行本地化處理尊搬,自行發(fā)揮
另外補充一點文章開頭說的添加本地化文件叁鉴,涉及到**.lproj文件。這里說明一下佛寿,意思就是只要你添加了本地化文件幌墓,比喻說中文或者法語但壮,就會自動生成這個文件,而且每種語言對應(yīng)一個常侣,命名也是自動的蜡饵。這個文件在項目文件中,打開項目文件就可以看到胳施,如下圖
三溯祸、下載
四、推薦閱讀
第一篇:應(yīng)用程序本地化 這篇文章寫的很詳細舞肆,除了老一點
第二篇:iOS 設(shè)置App的名稱