iOS -國(guó)際化

之前公司的app可能要在島國(guó)和東南亞地區(qū)使用缀台,所以最合理的方法就是--國(guó)際化棠赛。

寫(xiě)這篇文章也是為一個(gè)妹子寫(xiě)的(咦~~要是漢子我才不寫(xiě)),她在xib那一塊的國(guó)際化有些不太了解膛腐,正好其他童鞋也可以學(xué)習(xí)下睛约。難度還是不大的,挺簡(jiǎn)單的哲身。

文本分三部分開(kāi)始講國(guó)際化:字符串國(guó)際化(包括app名稱)辩涝、圖片國(guó)際化、sb xib國(guó)際化勘天。(有其他需要補(bǔ)充請(qǐng)?zhí)崾疚艺S時(shí)補(bǔ)充)

先從字符串開(kāi)始吧:
1:字符串國(guó)際化:
打開(kāi)你的工程,選中project->Info->Localizations脯丝,然后點(diǎn)擊”+”沧踏,添加需要國(guó)際化/本地化的語(yǔ)言,如下圖箭頭位置:


Paste_Image.png

添加完你想要的語(yǔ)言之后巾钉,會(huì)顯示如下提示框:

Paste_Image.png

注意: “zh-Hans”和“zh-Hant”是簡(jiǎn)體中文和繁體中文的縮寫(xiě),不要混淆了

(1)選擇完語(yǔ)言之后就是國(guó)際化字符串秘案,先從app名稱開(kāi)始:
選中Info.plist砰苍,按下鍵盤(pán)上的command + N,選擇Strings File(iOS->Resource->Strings File)

Paste_Image.png

選擇之后就是命名阱高,注意:文件名字命名為InfoPlist赚导,且必須是這個(gè)名字
之后你會(huì)發(fā)現(xiàn)工程中會(huì)多出新建的文件:

Paste_Image.png

之后需要做的是選中InfoPlist.strings,在xcode右側(cè)點(diǎn)擊


Paste_Image.png

這個(gè)按鈕赤惊。
會(huì)彈出一個(gè)對(duì)話框吼旧,展開(kāi)對(duì)話框列表,發(fā)現(xiàn)下拉列表所展示的語(yǔ)言正是我們?cè)谏厦媾渲玫男枰獓?guó)際化的語(yǔ)言未舟,選擇我們需要本地化的語(yǔ)言圈暗,然后點(diǎn)擊Localize按鈕:

Paste_Image.png

隨后右側(cè)會(huì)出現(xiàn)好多你添加的語(yǔ)言:


Paste_Image.png

你每個(gè)勾選上就可以了掂为。隨后去剛剛穿件的pilist就能看到勾選上的語(yǔ)言:


Paste_Image.png

簡(jiǎn)單闡述下原理:程序啟動(dòng)時(shí),會(huì)根據(jù)操作系統(tǒng)設(shè)置的語(yǔ)言员串,自動(dòng)加載InfoPlist.strings文件下對(duì)應(yīng)的語(yǔ)言文件勇哗,然后顯示應(yīng)用程序的名字。
接下來(lái)寸齐,我們分別用不同的語(yǔ)言給InfoPlist.strings下的文件設(shè)置對(duì)應(yīng)的名字欲诺。
在不通語(yǔ)言中配置不通的app名字:各個(gè)語(yǔ)言都隨便起一個(gè)名字,拿英語(yǔ)版舉例渺鹦,就不一一配置了扰法。

CFBundleDisplayName = "";是顯示不通的名字


Paste_Image.png

之后更改你的手機(jī)語(yǔ)言,運(yùn)行一下demo就能看到不用的app名稱了毅厚。
以上app名稱國(guó)際化就完成了塞颁,總結(jié)一下:
1.在Project的設(shè)置中通過(guò)點(diǎn)擊”+”添加需要本地化的語(yǔ)言。
2.然后在Xcode右側(cè)的File inspection中點(diǎn)擊Localize卧斟,選中需要本地化App名稱的語(yǔ)言殴边。
3.最后在每個(gè)語(yǔ)言對(duì)應(yīng)的文件中以key = value(CFBundleDisplayName = “App名稱”;);的形式設(shè)置App的名稱。

(2)國(guó)際化字符串:
和應(yīng)用名稱本地化一樣珍语,首先需要command + N锤岸,選擇iOS -> Resource -> Strings File,需要注意的是板乙,字符串國(guó)際化的plist文件名必須是:Localizable
文件創(chuàng)建成功是偷,查看Xcode左側(cè)導(dǎo)航列表,發(fā)現(xiàn)多了一個(gè)名為L(zhǎng)ocalizable.strings的文件募逞,同樣選中Localizable.strings文件蛋铆,在Xcode的File inspection中點(diǎn)擊Localize

Paste_Image.png

選擇需要國(guó)際化的語(yǔ)言:
Paste_Image.png

同樣在每個(gè)語(yǔ)言都勾選上,之后左側(cè)自動(dòng)出現(xiàn)如下:
Paste_Image.png

依舊是以key-value的形式去寫(xiě):
Paste_Image.png

Paste_Image.png

每種語(yǔ)言都寫(xiě)上適當(dāng)?shù)膰?guó)際化語(yǔ)言放接,寫(xiě)完之后刺啦,我們要用到NSLocalizedString(key, comment)這個(gè)宏,根據(jù)Key獲取對(duì)應(yīng)的字符串纠脾,然后賦值給代碼中的字符串玛瘸。
在需要國(guó)際化字符串的地方這樣寫(xiě):


Paste_Image.png

運(yùn)行之后,btn的名字就會(huì)隨著系統(tǒng)的語(yǔ)言而改變苟蹈。
細(xì)心的同學(xué)可以發(fā)現(xiàn)糊渊,我沒(méi)有給English語(yǔ)言適配,原因如下:系統(tǒng)根據(jù)某個(gè)key去獲取對(duì)應(yīng)的字符串時(shí)慧脱,如果沒(méi)有找到渺绒,那么就會(huì)以key作為value返回。
這樣,字符串的國(guó)際化適配就做完了宗兼,不過(guò)如果真的適配到工程里躏鱼,工作量太大了,我們項(xiàng)目都做的差不多了针炉,老板才告知要適配多語(yǔ)言挠他,之后又苦逼的去國(guó)際化。中文太多了篡帕,雖然沒(méi)有技術(shù)含量殖侵,但一整天的適配,累死了镰烧。

(3)突然想到另外一點(diǎn)拢军,就是如果多人共同開(kāi)發(fā)情況下,國(guó)際化字符串的方法法:

項(xiàng)目開(kāi)發(fā)中怔鳖,獨(dú)立開(kāi)發(fā)的還是少數(shù)茉唉。經(jīng)常會(huì)有多人開(kāi)發(fā)的情況,這種情況结执,如果多人同時(shí)操作本地化文件度陆,極有可能會(huì)存在沖突。也就是說(shuō)献幔,我們不希望對(duì)方操作我們的本地化文件懂傀。但是上面介紹的代碼中字符串的本地化是使用的是默認(rèn)的文件名”Localizable”,因?yàn)閱?dòng)程序時(shí),系統(tǒng)將根據(jù)語(yǔ)言加載相應(yīng)的文件得到其對(duì)應(yīng)的字符串文件蜡感,這個(gè)字符串可以通過(guò)系統(tǒng)將NSLocalizedString中的宏生成名為“Localizable.strings”的文件蹬蚁。so我們要用到NSLocalizedStringFromTable(, , )。
也就是說(shuō)郑兴,如果你的strings文件名字不是Localizable而是自定義的話犀斋,如FuckBoss.strings,那么你就得使用NSLocalizedStringFromTable這個(gè)宏來(lái)讀取本地化字符串情连。
三個(gè)參數(shù):1.國(guó)際化的字符串 2.你創(chuàng)建的FuckBoss文件的名稱 3.填nil就ok了


Paste_Image.png

這種做法叽粹,同樣能達(dá)到國(guó)際化的效果禁筏,并且別人還不會(huì)修改你的代碼衡招。

(2)圖片的國(guó)際化
下面開(kāi)始講講圖片的國(guó)際化方法:
1.第一種方式是最簡(jiǎn)單的空执,就是根據(jù)之前字符串key-value方式儲(chǔ)存照片名稱


Paste_Image.png

2.第二種方法
將圖片拖入工程中门坷,例如“music@2x.png”绸吸,然后選中music@2x.png,展開(kāi)Xcode右側(cè)的file Inspection,點(diǎn)擊Localize


Paste_Image.png

然后甫菠,右擊music@2x.png->show in Finder,我們發(fā)現(xiàn)在en.Iproj文件中多了一個(gè)名為music@2x.png的圖片
Paste_Image.png

當(dāng)然脯宿,zh-Hans.Iproj文件夾下并沒(méi)有圖片,因此你需要重復(fù)上一步的步驟,只不過(guò)這次選擇語(yǔ)言的時(shí)候選擇“中文”就ok了
Paste_Image.png

這樣圖片就添加進(jìn)去了哩至,相同的步驟菜谣,把所有需要國(guó)際化的圖片冈敛,按照這個(gè)方法癌压,添加進(jìn)去就行了棠枉,之后去手機(jī)系統(tǒng)里切換不同語(yǔ)言泡挺,運(yùn)行xcode辈讶。

(3)sb贱除、xib國(guó)際化方法:
首先點(diǎn)擊一下xib褂删,之后去右側(cè)找Localize..

Paste_Image.png

這時(shí)候出來(lái)的彈窗,會(huì)想上面一面鳄虱,下拉會(huì)有好多語(yǔ)言弟塞,這時(shí)候,你只需選擇“Base”
Paste_Image.png

下一步倍踪,之后繼續(xù)去xcode右側(cè):
Paste_Image.png

會(huì)出現(xiàn)未勾選的語(yǔ)言系宫,這時(shí)候全部勾選上。去xcode左側(cè)建车,會(huì)出現(xiàn)下圖:
Paste_Image.png

xib能夠點(diǎn)開(kāi)扩借,會(huì)出現(xiàn)不同語(yǔ)種的,隨便點(diǎn)擊一個(gè)(英語(yǔ)為例):
Paste_Image.png

紅框的地方修改成你想表達(dá)的英語(yǔ)癞志,這個(gè)key-value頁(yè)面里往枷,基本涵蓋了xib上所有的屬性,你只需去修改就可以了凄杯。
同理错洁,再去設(shè)置其他語(yǔ)言的內(nèi)容,之后去手機(jī)系統(tǒng)里切換不同語(yǔ)言戒突,運(yùn)行xcode屯碴。

熟悉一邊之后就會(huì)覺(jué)得挺簡(jiǎn)單的,沒(méi)多大難度膊存。
煩人的地方就在于你版本中的中文导而,用NSLocalizedString(key, comment)這個(gè)宏忱叭,全部改為國(guó)際化模式,中文太多今艺,手就廢了韵丑。

以上總結(jié)國(guó)際化,哪里有錯(cuò)誤虚缎,還請(qǐng)童鞋指出撵彻。

溫馨提示:妹子,祝你好運(yùn)实牡。等我北京陌僵,記得帶我去次好次噠。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末创坞,一起剝皮案震驚了整個(gè)濱河市碗短,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌题涨,老刑警劉巖偎谁,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異纲堵,居然都是意外死亡搭盾,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門婉支,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)鸯隅,“玉大人,你說(shuō)我怎么就攤上這事向挖◎蛞裕” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵何之,是天一觀的道長(zhǎng)跟畅。 經(jīng)常有香客問(wèn)我,道長(zhǎng)溶推,這世上最難降的妖魔是什么徊件? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮蒜危,結(jié)果婚禮上虱痕,老公的妹妹穿的比我還像新娘。我一直安慰自己辐赞,他們只是感情好部翘,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著响委,像睡著了一般新思。 火紅的嫁衣襯著肌膚如雪窖梁。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,763評(píng)論 1 307
  • 那天夹囚,我揣著相機(jī)與錄音纵刘,去河邊找鬼。 笑死荸哟,一個(gè)胖子當(dāng)著我的面吹牛彰导,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播敲茄,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼山析!你這毒婦竟也來(lái)了堰燎?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤笋轨,失蹤者是張志新(化名)和其女友劉穎秆剪,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體爵政,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡仅讽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了钾挟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片洁灵。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖掺出,靈堂內(nèi)的尸體忽然破棺而出徽千,到底是詐尸還是另有隱情,我是刑警寧澤汤锨,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布双抽,位于F島的核電站,受9級(jí)特大地震影響闲礼,放射性物質(zhì)發(fā)生泄漏牍汹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一柬泽、第九天 我趴在偏房一處隱蔽的房頂上張望慎菲。 院中可真熱鬧,春花似錦锨并、人聲如沸钧嘶。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)有决。三九已至闸拿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間书幕,已是汗流浹背新荤。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留台汇,地道東北人苛骨。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像苟呐,于是被迫代替她去往敵國(guó)和親痒芝。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

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