Xcode上手之程序國(guó)際化與本地化

Xcode技巧系列:http://www.reibang.com/notebooks/7639304/latest

如果希望應(yīng)用能夠跨越國(guó)界台丛,支持不同的語(yǔ)言和地區(qū),那么,我們就需要做國(guó)際化和本地化了。

1.添加國(guó)際化

要支持某一種語(yǔ)言,我們需要把該語(yǔ)言添加到項(xiàng)目中世囊。步驟:
選擇項(xiàng)目文件->選擇項(xiàng)目->Info選項(xiàng)卡->Localizations列表,這里管理:


屏幕快照 2017-01-05 下午11.31.28.png

Resources顯示了該語(yǔ)言所本地化的文件數(shù)量窿祥。

Use Base Internationalization選項(xiàng)株憾,勾選后,Xcode在開發(fā)者沒有提供所在語(yǔ)言和地區(qū)的本地化版本晒衩,就會(huì)載入基本版本嗤瞎。如果沒有勾選,那么開發(fā)者必須要提供支持每一個(gè)語(yǔ)言對(duì)應(yīng)的本地化版本听系。

取消該選項(xiàng)贝奇,會(huì)出現(xiàn):


屏幕快照 2017-01-05 下午11.38.08.png

這里選擇the trash:移除文件到廢紙簍,或者移動(dòng)到指定的語(yǔ)言文件中靠胜。

點(diǎn)擊+號(hào)掉瞳,可以添加要支持的語(yǔ)言,一旦項(xiàng)目支持兩個(gè)以上的語(yǔ)言浪漠,則項(xiàng)目就支持國(guó)際化了陕习。


屏幕快照 2017-01-05 下午11.42.02.png

添加簡(jiǎn)體中文,出現(xiàn)上圖對(duì)話框址愿。
其中该镣,F(xiàn)ile Types有兩個(gè)選擇:
Localizable string本地化為字符串,會(huì)新建一個(gè).strings文件必盖,只需要替換字符串即可拌牲。不同的語(yǔ)言俱饿,都用的一套stroyboard或xib文件歌粥,只是替換IB文件字符串即可。
Interface builder ...本地化為...拍埠,會(huì)創(chuàng)建一套新的storyboard或xib文件失驶,相當(dāng)于是每一種語(yǔ)言就是一套storyboard或xib文件。各種語(yǔ)言之間的IB關(guān)聯(lián)操作不會(huì)影響枣购。

2.Localizable String的方式

當(dāng)我們添加了別的語(yǔ)言嬉探,選擇Localizable string后擦耀,項(xiàng)目里的storyboard文件或xib文件就會(huì)出現(xiàn)對(duì)應(yīng)的視圖字符串文件(.strings文件),如圖:


屏幕快照 2017-01-05 下午11.57.17.png

修改該文件的內(nèi)容格式:


屏幕快照 2017-01-06 上午12.29.58.png

該文件需要注意的地方就是涩堤,結(jié)尾的";"不能少眷蜓,其中ObjectID在IB里面,點(diǎn)擊你要本地化的控件胎围,選擇第三個(gè)身份檢查器吁系,就能看的ObjectID了。
屏幕快照 2017-01-06 上午12.31.35.png

依次找到需要本地化的控件白魂,填入.strings文件內(nèi)即可汽纤。

3.Interface builder ...的方式

當(dāng)選擇該方式后,會(huì)出如圖所示:


屏幕快照 2017-01-06 上午12.39.48.png

我們創(chuàng)建了一個(gè)日語(yǔ)的版本福荸,選擇的是Interface builder...的方式蕴坪,發(fā)現(xiàn)多處了一個(gè)Storyboard,此時(shí)敬锐,我們可以修改日語(yǔ)的文字為999背传,模擬器選擇日語(yǔ)版本,運(yùn)行滞造,發(fā)現(xiàn)续室,文字本地化為999了。


屏幕快照 2017-01-06 上午12.42.33.png

4.自定義文本的本地化

上面的方式是在IB中創(chuàng)建的控件谒养,但是很多時(shí)候挺狰,一些文本信息是在代碼中確定的,這時(shí)候买窟,我們需要對(duì)代碼中的文本信息進(jìn)行自定義本地化丰泊。

首先添加一個(gè)strings文件,F(xiàn)ile->new->file->iOS->Strings File文件創(chuàng)建始绍。文件名稱最好命名為L(zhǎng)ocalizable瞳购,因?yàn)槟J(rèn)是去找項(xiàng)目中的該文件進(jìn)行本地化。

創(chuàng)建好后亏推,選中該文件学赛,在檢查器中,選擇需要添加本地化的語(yǔ)言:


屏幕快照 2017-01-06 上午12.49.08.png

然后Localizable.strings能夠展開吞杭,如圖:

屏幕快照 2017-01-06 上午1.00.02.png

我們?cè)谛枰恼Z(yǔ)言文件里添加盏浇,比如,在簡(jiǎn)體中文添加:

//千萬注意芽狗,有分號(hào)結(jié)尾>铌!!滴劲!
Hello_String = "你好";
也可以這樣寫:"Hello_String" = "你好"

在英文中添加:

Hello_String = "hello";

在日語(yǔ)中添加:

Hello_String = "dddd";

在代碼里攻晒,需要用的地方使用:

let str = NSLocalizedString("Hello_String", comment: "")
//comment:對(duì)key的注釋,可以不填
print(str)

結(jié)果可以看到班挖,打印了dddd(由于模擬器剛剛選擇了日語(yǔ)為本地語(yǔ)言):


屏幕快照 2017-01-06 上午1.06.53.png

如果說沒有找到對(duì)應(yīng)的本地化語(yǔ)言翻譯鲁捏,會(huì)顯示鍵名,比如


屏幕快照 2017-01-06 上午1.11.13.png

這個(gè)是很有用的萧芙,假如我們漏掉了一兩個(gè)沒有翻譯碴萧,也會(huì)顯示鍵名,不會(huì)出現(xiàn)空白的情況末购。

5圖片本地化

圖片本地化的話破喻,由于資源文件不允許出現(xiàn)相同名稱的圖片,我可以用另外一種方法盟榴,將圖片的名稱修改為需要的各種語(yǔ)言不同的名稱曹质,然后通過上方自定義本地化文件的方式,寫入到不同語(yǔ)言的本地化文件中擎场,加載的時(shí)候通過

UIImage(named: imageNmae)

的方式加載不同語(yǔ)言環(huán)境下不同的圖片羽德。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市迅办,隨后出現(xiàn)的幾起案子宅静,更是在濱河造成了極大的恐慌,老刑警劉巖站欺,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件姨夹,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡矾策,警方通過查閱死者的電腦和手機(jī)磷账,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贾虽,“玉大人逃糟,你說我怎么就攤上這事∨罨恚” “怎么了绰咽?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)地粪。 經(jīng)常有香客問我取募,道長(zhǎng),這世上最難降的妖魔是什么驶忌? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任矛辕,我火速辦了婚禮,結(jié)果婚禮上付魔,老公的妹妹穿的比我還像新娘聊品。我一直安慰自己,他們只是感情好几苍,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布翻屈。 她就那樣靜靜地躺著,像睡著了一般妻坝。 火紅的嫁衣襯著肌膚如雪伸眶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天刽宪,我揣著相機(jī)與錄音厘贼,去河邊找鬼。 笑死圣拄,一個(gè)胖子當(dāng)著我的面吹牛嘴秸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播庇谆,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼岳掐,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了饭耳?” 一聲冷哼從身側(cè)響起串述,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎寞肖,沒想到半個(gè)月后纲酗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡新蟆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年耕姊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片栅葡。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡茉兰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出欣簇,到底是詐尸還是另有隱情规脸,我是刑警寧澤熊咽,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站横殴,受9級(jí)特大地震影響卿拴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜梨与,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一堕花、第九天 我趴在偏房一處隱蔽的房頂上張望粥鞋。 院中可真熱鬧,春花似錦呻粹、人聲如沸壕曼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)腮郊。三九已至筹燕,卻和暖如春伴榔,著一層夾襖步出監(jiān)牢的瞬間庄萎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工援奢, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留忍捡,地道東北人集漾。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓具篇,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親驱显。 傳聞我的和親對(duì)象是個(gè)殘疾皇子瞳抓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

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