iOS應(yīng)用程序多語言本地化解決方案

多語言在應(yīng)用程序中一般有兩種做法:

一保屯、程序中提供給用戶自己選擇的機(jī)會辽俗;

二深啤、根據(jù)當(dāng)前用戶當(dāng)前移動設(shè)備的語言自動將我們的app切換對應(yīng)語言础废。

第一種做法比較簡單完全靠自己的發(fā)揮了汛骂,這里主要講第二種做法,主要分一下幾點(diǎn):

本地化應(yīng)用程序名稱
本地化字符串
本地化圖片
本地化其他文件
1.本地化應(yīng)用程序名稱

(1)點(diǎn)擊“new file”然后在彈出窗口左側(cè)選擇IOS的resource項(xiàng)评腺,在右側(cè)就可以看到“String File”的圖標(biāo)帘瞭。創(chuàng)建這個文件,命名為“InfoPlist”(一定是這個文件名) 就生成一個InfoPlist.strings文件蒿讥;

(2)選中InfoPlist.strings 點(diǎn)擊 XCode-> View-> Utilities -> File Inspector,在Localization中點(diǎn)“+”蝶念,添加chinese (zh-Hans)類型的為簡體中文,english 應(yīng)該會自動添加上芋绸。然后在InfoPlish.strings 左邊會多出一個三角形媒殉,點(diǎn)擊展開后可以看到InfoPlish.strings(english)和InfoPlish.strings(chinese)兩個版本的文件;

(3)在InfoPlish.strings(english)文件中加入:
[cpp] view plain copy

CFBundleDisplayName ="Program";
其中“Program”為英文應(yīng)用程序名稱摔敛,同理在InfoPlish.strings(chinese)文件中加入:
[cpp] view plain copy

CFBundleDisplayName ="應(yīng)用程序";
其中“應(yīng)用程序”為中文名稱廷蓉,注意:CFBundleDisplayName加不加雙引號都行

(4)編輯Info.plist,添加一個新的屬性Application has localized display name, 設(shè)置其類型為boolean马昙,并將其value設(shè)置為YES即可

2.本地化字符串

(1)類似“本地化應(yīng)用程序名稱”第一步桃犬,點(diǎn)擊“new file”然后在彈出窗口左側(cè)選擇IOS的resource項(xiàng),在右側(cè)就可以看到“String File”的圖標(biāo)行楞。創(chuàng)建這個文件攒暇,命名為“Localizable”(一定是這個文件名否則后面調(diào)用會有一些區(qū)別)就生成一個Localizable.strings文件;

(2)類似“本地化應(yīng)用程序名稱”第二第三步敢伸,在Localizable.strings(english)文件中加入:
[cpp] view plain copy

"welcome"="Click on the screen to continue...";
同理在Localizable.strings(chinese)文件中加入:
[cpp] view plain copy

"welcome"="點(diǎn)擊屏幕繼續(xù)...";
(3)在代碼中使用NSLocalizedString(<#key#>, <#comment#>)來讀取本地化字符串扯饶,代碼如下:
[cpp] view plain copy

CCLabelTTF *label = [CCLabelTTF labelWithString:NSLocalizedString(@"welcome", nil) fontName:@"Marker Felt" fontSize:18];
CGSize size = [[CCDirector sharedDirector] winSize];
label.position = ccp( size.width /2 , size.height/2+30 );
[self addChild: label];
注意:如果你的strings文件名字不是Localizable而是自定義的話,如wang.strings,那么你就得使用NSLocalizedStringFromTable()來讀取本地化字符串:
[cpp] view plain copy

NSLocalizedStringFromTable(@"welcome",@"wang", nil)
3.本地化圖片

這里又分兩種方法尾序,第一種和本地化字符串方法類似钓丰,把中英文圖片的名字分別存到中英文對應(yīng)的strings文件,然后通過NSLocalizedString)來獲取圖片名稱每币,如:

Localizable.strings(english)文件中加入:
[cpp] view plain copy

"BtnCancel"="BtnCancelEn.png";
Localizable.strings(chinese)文件中加入:
[cpp] view plain copy

"BtnCancel"="BtnCancelCn.png";
然后在代碼中使用NSLocalizedString)來獲取圖片名稱:
[cpp] view plain copy

CCSprite *btnCancel = [CCSprite spriteWithSpriteFrameName:NSLocalizedString(@"BtnCancel", nil)];
btnCancel.position=ccp(s.width/2,s.height/2-40);
[self addChild:btnCancel z:2 tag:104];
第二種就比較正規(guī)化了:點(diǎn)中你要本地化的圖片携丁,如“icon.png”,然后XCode-> View-> Utilities -> File Inspector兰怠,在Localization中點(diǎn)“+”添加chinese (zh-Hans)梦鉴;在圖片左邊就會出現(xiàn)一個倒三角,點(diǎn)開就會出現(xiàn)(english)和(chinese)的2張圖揭保,并且在項(xiàng)目文件夾中會出現(xiàn)en.lproj文件和zh-Hans.lproj文件肥橙;en.lproj文件存放的是英文版圖片,zh-Hans.lproj存放的是中文版圖片秸侣,中英文圖片名字一樣存筏,我們在文件夾中直接替換圖片就可以了,最后使用時直接使用正常名字就行了味榛,如:“icon.png”椭坚。

4.本地化其他文件

本地化其他文件和本地化圖片第二種方法類似,先在Localization中添加語言搏色,然后把對應(yīng)版本拷貝到en.lproj和zh-Hans.lproj文件夾中善茎,最后引用就行了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末频轿,一起剝皮案震驚了整個濱河市垂涯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌略吨,老刑警劉巖集币,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異翠忠,居然都是意外死亡鞠苟,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進(jìn)店門秽之,熙熙樓的掌柜王于貴愁眉苦臉地迎上來当娱,“玉大人,你說我怎么就攤上這事考榨】缦福” “怎么了?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵河质,是天一觀的道長冀惭。 經(jīng)常有香客問我震叙,道長,這世上最難降的妖魔是什么散休? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任媒楼,我火速辦了婚禮,結(jié)果婚禮上戚丸,老公的妹妹穿的比我還像新娘划址。我一直安慰自己,他們只是感情好限府,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布夺颤。 她就那樣靜靜地躺著,像睡著了一般胁勺。 火紅的嫁衣襯著肌膚如雪世澜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天署穗,我揣著相機(jī)與錄音宜狐,去河邊找鬼。 笑死蛇捌,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的咱台。 我是一名探鬼主播络拌,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼回溺!你這毒婦竟也來了春贸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤遗遵,失蹤者是張志新(化名)和其女友劉穎萍恕,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體车要,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡允粤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了翼岁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片类垫。...
    茶點(diǎn)故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖琅坡,靈堂內(nèi)的尸體忽然破棺而出悉患,到底是詐尸還是另有隱情,我是刑警寧澤榆俺,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布售躁,位于F島的核電站坞淮,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏陪捷。R本人自食惡果不足惜回窘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望揩局。 院中可真熱鬧毫玖,春花似錦、人聲如沸凌盯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽驰怎。三九已至阐滩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間县忌,已是汗流浹背掂榔。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留症杏,地道東北人装获。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像厉颤,于是被迫代替她去往敵國和親穴豫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評論 2 361

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