在Xcode 6中,國(guó)際化時(shí)需要注意以下幾個(gè)方面
1、先讓工程支持國(guó)際化
在項(xiàng)目管理界面中,在 Localization 中,添加對(duì) Chinese 的支持,這個(gè)時(shí)候,通常會(huì)提示你,需要國(guó)際化的文件,通常是 xib 文件和 plist 文件,如果你需要為你的 XIB 文件增加國(guó)際化的支持,那就選中他們,默認(rèn)是全選的,這個(gè)時(shí)候,你會(huì)發(fā)現(xiàn),沒(méi)有找到你的?.String 文件。

對(duì)的,因?yàn)槟氵@個(gè)時(shí)候你還沒(méi)有添加 .String 文件,好的,去添加它
2、添加 Localizable.String 文件
是的,沒(méi)錯(cuò),就這樣命名,先不要調(diào)皮,過(guò)會(huì)告訴你如何調(diào)皮。創(chuàng)建文件之后,在 Xcode 的右側(cè)點(diǎn)擊 Localization ,會(huì)默認(rèn)的提示你,需要把當(dāng)前的 Localizable.String 文件放到哪個(gè)國(guó)際化文件夾中。

這個(gè)地方說(shuō)一下,國(guó)際化,其實(shí)也沒(méi)那么智能,就是根據(jù)當(dāng)前的語(yǔ)言環(huán)境更改加載的文件夾罷了,當(dāng)然 App 的語(yǔ)言環(huán)境是不是需要根據(jù)系統(tǒng)變動(dòng)而變動(dòng),還需要在 scheme 中設(shè)置,默認(rèn)的設(shè)置,是跟隨系統(tǒng)的語(yǔ)言環(huán)境,這個(gè)也是開(kāi)發(fā)者認(rèn)為模擬器不能調(diào)試國(guó)際化的原因,只要在 Scheme 中設(shè)置不跟隨系統(tǒng),而是選擇我們需要調(diào)試的語(yǔ)言環(huán)境。一會(huì)兒再說(shuō),賣(mài)個(gè)關(guān)子,嘻嘻。
通常會(huì)添加到一個(gè)叫 Base 的文件夾中,但是,需要國(guó)際化好幾個(gè)文件,我的選擇只想支持漢語(yǔ)和英語(yǔ),那我就默認(rèn)的丟到 English 里了。添加好之后文件的屬性可以看到發(fā)生了變化。

好的,創(chuàng)建成功了。繼續(xù)我們第一個(gè)問(wèn)題,再次到之前的界面,繼續(xù)給我們的工程添加一個(gè)語(yǔ)種的支持。同樣的操作,你會(huì)看到你的 Localizable.String 文件,我們只為其添加國(guó)際化,所以,只選擇它,取消其他的選擇,點(diǎn)擊確定。


點(diǎn)擊確定之后,再看一下文件的屬性

這樣,你就成功的為你的工程添加了一個(gè)國(guó)際化文件,
我們?yōu)閲?guó)際化文件添加一個(gè)字符串 Hello, world,使用
NSLog(@"%@",NSLocalizedString(@"Hello, world",nil));
就可以得到你國(guó)際化的字符串了。
3、解決之前的關(guān)子
為什么需要使用 Localizable.String 去命名國(guó)際化文件呢?
原因很簡(jiǎn)單,只用使用這個(gè)名字,NSLocalizedString這個(gè)宏才能找到正確的國(guó)際化文件,否則,是找不到的,不信,你試一下。。。
我如果還是想用別的文件,怎么辦?
簡(jiǎn)單,使用另一個(gè)宏NSLocalizedStringFromTable
這個(gè)宏,可以讓你指定國(guó)際化文件的名稱(chēng),自動(dòng)去你的bundle中去搜索,搜到了,就使用它。
我們創(chuàng)建一個(gè) Localization.String 文件


4、怎么在模擬器中調(diào)試國(guó)際化呢?
不要改動(dòng)你的 scheme ,只是Duplicate Scheme就可以了。你也可以在調(diào)試完了之后刪掉,都無(wú)所謂的。



重命名它,或者直接不用管它,然后點(diǎn)擊 Run

看到了嗎,選擇簡(jiǎn)體中文,就可以了,還可以繼續(xù)的選擇,把區(qū)域也設(shè)置一下

點(diǎn)擊Close
你就會(huì)看到你的Scheme里多了一個(gè)Copy of XXX,就是你剛創(chuàng)建的 Scheme,選中它,運(yùn)行,你就會(huì)看到中文版的App啦。