iOS開發(fā)-圖文講解語言國(guó)際化

努力奔跑.jpg

前言:iOS的語言國(guó)際化是指根據(jù)用戶手機(jī)系統(tǒng)的語言設(shè)置,自動(dòng)將APP的語言設(shè)置為和用戶手機(jī)系統(tǒng)語言一致的語言申鱼。通常一些APP需要支持多種語言既琴,這就要求APP所展示的文字信息朝扼,能夠在不同的系統(tǒng)語言下呈現(xiàn)出相對(duì)應(yīng)的語言也拜。本文將簡(jiǎn)單從以下常用的幾方面進(jìn)行圖文講解以舒。

一、APP名稱國(guó)際化

APP名稱國(guó)際化是指同一個(gè)APP的名稱慢哈,在不同的系統(tǒng)語言環(huán)境下顯示不同的名稱蔓钟。
創(chuàng)建一個(gè)新的strings文件如圖1-1:

1-1.png

點(diǎn)擊Next將文件命名為InfoPlist且必須是這個(gè)名字(這里有些電腦可能會(huì)顯示出strings后綴,只需要改后綴前的名字即可)如圖1-2:

1-2.png

點(diǎn)擊Create即創(chuàng)建成功在左側(cè)列表會(huì)顯示一個(gè)InfoPlist.strings文件如圖1-3:

1-3.png

此時(shí)選中該文件可以在右側(cè)看到如圖1-4:

1-4.png

點(diǎn)擊Localize...按鈕即可顯示出當(dāng)前已添加的語言如圖1-5:

1-5.png

這里是由于我們還沒有添加任何的語言只有一個(gè)默認(rèn)的英語卵贱,現(xiàn)在可以添加一些我們需要的語言滥沫。如圖1-6:

1-6.png

這里我們添加簡(jiǎn)體中文和繁體中文如圖1-7:

1-7.png

這里選擇了需要添加的資源文件即我們創(chuàng)建的InfoPlist.strings文件,創(chuàng)建完成后如圖1-8:

1-8.png

可以看到選擇有三種語言:簡(jiǎn)體中文键俱、繁體中文兰绣、英文。這三種語言都只有一個(gè)資源文件即我們的InfoPlist.strings文件编振。此時(shí)可以看到剛創(chuàng)建的InfoPlist.strings文件也發(fā)生了變化缀辩,在左側(cè)出現(xiàn)了一個(gè)三角箭頭,意味著該文件已經(jīng)不是一個(gè)文件了,點(diǎn)擊箭頭可見里邊包含了三個(gè)子文件如圖1-9:

1-9.png

同時(shí)選中主文件即當(dāng)選選中的項(xiàng)查看右側(cè)可見多了我們剛添加的語言如圖1-10:

1-10.png

從1-6至1-8這三步其實(shí)可以在工程創(chuàng)建的時(shí)候就可以添加雌澄,前提是Main.storyboard或者Launch.storyboard沒有被刪除,這時(shí)添加語言時(shí)是可以選擇這兩項(xiàng)的杯瞻,要不無法添加镐牺。由于我的開發(fā)習(xí)慣是純代碼開發(fā),故不用這兩項(xiàng)魁莉,所以在創(chuàng)建文件的時(shí)候直接就給刪除了睬涧。這樣就需要在創(chuàng)建了strings文件之后再添加語言。

至此該創(chuàng)建的文件已創(chuàng)建完成旗唁,現(xiàn)在只需要在剛才圖1-9的文件中按照固定格式(key = value)設(shè)置相應(yīng)的名字即可畦浓,如圖1-11至圖1-13:

1-11.png
1-12.png
1-13.png

CFBundleDisplayName為固定字段,可以加雙引號(hào)也可以不加检疫。
修改模擬器或者手機(jī)語言為英文讶请、簡(jiǎn)體中文、繁體中文顯示如圖1-14至圖1-16:

1-14.png
1-15.png
1-16.png

至此屎媳,APP名稱國(guó)際化已完成夺溢。

二、APP內(nèi)字符串國(guó)際化

APP內(nèi)字符串國(guó)際化實(shí)現(xiàn)有兩種:
1烛谊、通過系統(tǒng)固定strings文件名稱來實(shí)現(xiàn)风响;
創(chuàng)建strings文件如圖2-1-1:

2-1-1.png

點(diǎn)擊Next將文件命名為Localizable且必須是這個(gè)名字(這里有些電腦可能會(huì)顯示出strings后綴,只需要改后綴前的名字即可)如圖2-1-2:

2-1-2.png

點(diǎn)擊Create即創(chuàng)建成功在左側(cè)列表會(huì)顯示一個(gè)Localizable.strings文件如圖2-1-3:

2-1-3.png

此時(shí)選中該文件可以在右側(cè)看到如圖2-1-4:

2-1-4.png

點(diǎn)擊Localize...按鈕此時(shí)會(huì)彈出一個(gè)選擇語言的彈框(這是由于當(dāng)前工程包含的語言不止一種)如圖2-1-5:

2-1-5.png

選擇一種語言點(diǎn)擊Localize按鈕即可如圖2-1-6:

2-1-6.png

現(xiàn)在顯示的是我們剛才選擇的那種語言丹禀,然后在這就可以對(duì)其他未選中的語言選擇就行了状勤,我們把未選中的兩種語言均添加,選擇語言大于一種双泪,該strings文件會(huì)自動(dòng)添加相應(yīng)語言文件持搜,即左側(cè)會(huì)出現(xiàn)一個(gè)三角箭頭如圖2-1-7:

2-1-7.png

現(xiàn)在我們只需要在相應(yīng)的文件中按照固定格式(key = value)設(shè)置需要國(guó)際化的字符串即可。這里我們以標(biāo)簽欄標(biāo)題為例如圖2-1-8至圖2-1-10:

2-1-8.png
2-1-9.png
2-1-10.png

使用時(shí)需要用到Foundation框架下的一個(gè)宏NSLocalizedString(key, comment)焙矛,該宏中包含兩個(gè)參數(shù)ketcomment朵诫。
key:我們?cè)?code>strings文件中的鍵(key)。
comment:對(duì)該字符串的描述(注釋)薄扁,可寫nil或者@""或者任意字符串剪返。
該宏的意思為根據(jù)傳入的key來獲取對(duì)應(yīng)的字符串,如果沒有找到相應(yīng)的字符串會(huì)返回傳入的key邓梅。

代碼中寫法如圖2-1-11:

2-1-11.png

修改模擬器或者手機(jī)語言為英文脱盲、簡(jiǎn)體中文、繁體中文我們來看一下顯示效果如圖2-1-12至圖2-1-14:

2-1-12.png
2-1-13.png
2-1-14.png

至此通過系統(tǒng)固定strings文件名稱來實(shí)現(xiàn)APP內(nèi)字符串國(guó)際化已完成日缨。

2钱反、通過自定義strings文件名稱來實(shí)現(xiàn)。

通過自定義strings文件名稱來實(shí)現(xiàn)語言國(guó)際化是為了在多人開發(fā)或者自己想發(fā)一個(gè)屬于自己的第三方控件并添加語言國(guó)際化的時(shí)候使用。這是為了避免工程中已存在系統(tǒng)固定strings文件名稱而產(chǎn)生沖突面哥,同時(shí)也可以避免與其他人共用同一個(gè)strings文件而造成的不必要的麻煩哎壳。下面我們來簡(jiǎn)單講解該實(shí)現(xiàn)方法。

創(chuàng)建strings文件如圖2-2-1:

2-2-1.png

點(diǎn)擊Next將文件命名為RHLocalizable(這里有些電腦可能會(huì)顯示出strings后綴尚卫,只需要改后綴前的名字即可)如圖2-2-2:

2-2-2.png

點(diǎn)擊Create即創(chuàng)建成功在左側(cè)列表會(huì)顯示一個(gè)RHLocalizable.strings文件如圖2-2-3:

2-2-3.png

此時(shí)重復(fù)上圖2-1-4至圖2-1-7的操作归榕。接下來我們?cè)趧偛艅?chuàng)建的RHLocalizable文件中按照固定格式(key = value)設(shè)置需要國(guó)際化的字符串即可。這里我們以字符串“”為例如圖2-2-4至圖2-1-6:

2-2-4.png
2-2-5.png
2-2-6.png

使用時(shí)需要用到Foundation框架下的一個(gè)宏NSLocalizedStringFromTable(key, tbl, comment)吱涉,該宏中包含三個(gè)參數(shù)ket刹泄、tblcomment
key:我們?cè)?code>strings文件中的鍵(key)怎爵。
tbl:我們創(chuàng)建的strings文件的名稱特石。
comment:對(duì)該字符串的描述(注釋),可寫nil或者@""或者任意字符串鳖链。
該宏的意思為根據(jù)傳入的key在名為tblstrings文件中來獲取對(duì)應(yīng)的字符串姆蘸,如果沒有找到相應(yīng)的字符串會(huì)返回傳入的key

使用時(shí)代碼中寫法如圖2-2-7:

2-2-7.png

修改模擬器或者手機(jī)語言為英文芙委、簡(jiǎn)體中文乞旦、繁體中文我們來看一下顯示效果如圖2-2-8至圖2-2-10:

2-2-8.png
2-2-9.png
2-2-10.png

至此通過自定義strings文件名稱來實(shí)現(xiàn)APP內(nèi)字符串國(guó)際化已完成。

由上可見無論是使用系統(tǒng)固定strings文件名還是自定義strings文件名的語言國(guó)際化在使用的時(shí)候都要使用到系統(tǒng)提供的相應(yīng)的宏题山,但是這兩個(gè)宏都比較長(zhǎng)并且并不是所有的參數(shù)都是每次需要改變的兰粉,所以我們?cè)谑褂玫臅r(shí)候可以通過系統(tǒng)的宏來再次定義兩個(gè)寫起來比較簡(jiǎn)短的宏來提高開發(fā)寫代碼效率,并且也能稍微的提高一下代碼的美觀顶瞳。
這里給大家暴露一下我的使用習(xí)慣如下:

#define   LS(key)          NSLocalizedString(key, nil)
#define   RHLS(key)        NSLocalizedStringFromTable(key, @"RHLocalizable", nil)

最后玖姑,還是希望能夠幫助到有需要的朋友們,愿我們能夠一起學(xué)習(xí)進(jìn)步慨菱,在開發(fā)的道路上越走越順利Q媛纭!!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末符喝,一起剝皮案震驚了整個(gè)濱河市闪彼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌协饲,老刑警劉巖畏腕,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異茉稠,居然都是意外死亡描馅,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門而线,熙熙樓的掌柜王于貴愁眉苦臉地迎上來铭污,“玉大人恋日,你說我怎么就攤上這事∴谀” “怎么了岂膳?”我有些...
    開封第一講書人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)磅网。 經(jīng)常有香客問我谈截,道長(zhǎng),這世上最難降的妖魔是什么知市? 我笑而不...
    開封第一講書人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮速蕊,結(jié)果婚禮上嫂丙,老公的妹妹穿的比我還像新娘。我一直安慰自己规哲,他們只是感情好跟啤,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著唉锌,像睡著了一般隅肥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上袄简,一...
    開封第一講書人閱讀 49,950評(píng)論 1 291
  • 那天腥放,我揣著相機(jī)與錄音,去河邊找鬼绿语。 笑死秃症,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的吕粹。 我是一名探鬼主播种柑,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼匹耕!你這毒婦竟也來了聚请?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤稳其,失蹤者是張志新(化名)和其女友劉穎驶赏,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體既鞠,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡母市,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了损趋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片患久。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡椅寺,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蒋失,到底是詐尸還是另有隱情返帕,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布篙挽,位于F島的核電站荆萤,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏铣卡。R本人自食惡果不足惜链韭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望煮落。 院中可真熱鬧敞峭,春花似錦、人聲如沸蝉仇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽轿衔。三九已至沉迹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間害驹,已是汗流浹背鞭呕。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留宛官,地道東北人琅拌。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像摘刑,于是被迫代替她去往敵國(guó)和親进宝。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

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