點(diǎn)擊Localization出現(xiàn)下圖,選擇一種語言進(jìn)行初始化,這里選擇的是English
創(chuàng)新互聯(lián)主營北票網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app軟件開發(fā)公司,北票h5微信小程序開發(fā)搭建,北票網(wǎng)站營銷推廣歡迎北票等地區(qū)企業(yè)咨詢
添加完成后程序中的.strings 文件多出三個(gè)子文件,括號(hào)中的字段表示對(duì)應(yīng)的語言
使用的時(shí)候,需要用到一個(gè)系統(tǒng)宏,和該宏類似的宏還有如下圖所以的4種
#define NSLocalizedStringFromTable(key, tbl, comment) [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:(tel)]
這個(gè)宏實(shí)際是調(diào)用了bundle的localizedStringForKey:::方法,并根據(jù)tbl名稱和key返回NSString類型,tbl就是我們所創(chuàng)建的.strings文件的文件名;key的話,這時(shí)候用plist的方式去理解就更加直觀了,就是plist文件的中key;Comment是對(duì)該key的一個(gè)描述,填nil即可。
官方文檔:
( )
一.添加語言
二.國際化多國語言操作
1.應(yīng)用名稱
(1)在new File..找到strings格式
(2)將.strings文件命名為“InfoPlist”
在每個(gè)語種中填寫CFBundleDisplayName = "對(duì)應(yīng)語種的命名";
二.字符串
(1)如上所示,同樣new File一個(gè)名為Localizable的strings文件
(2)添加各種語言中需要翻譯的字符串,格式如下
3.如果調(diào)用NSLocalizedString(key, comment)沒有找到key,則直接顯示key。
三.圖片(需要國際化的圖片不能放在Assets中?。?/p>
四.xib和storyboard
(1)xib和storyboard的國際化同上,Base文件是最重要的,這個(gè)文件的意義是,除了你選中的語言外,其他語言顯示的都是他。
(2)除了Base文件其他都是.strings文件,.strings文件中會(huì)自動(dòng)將Base中的文字展示出來,最后替換成相關(guān)語言即可。
只為了最基礎(chǔ)的學(xué)習(xí)。
最簡單的教學(xué)。
第一步:先建一個(gè)項(xiàng)目,打開項(xiàng)目如圖添加多語言文件
第二步:你在左邊的項(xiàng)目目錄里面去創(chuàng)建一個(gè)Localizable.strings文件, 切記 :文件名為Localizable,我試過其他名字沒有起到作用的原因是:如果創(chuàng)建.strings文件是自定義的名字的話,如Internation.strings,那么調(diào)用的方式為:
NSLocalizedStringFromTable(@”name”,@”起的文件名字”, nil)?
當(dāng)自定義名字后,使用NSLocalizedString的方式不起作用,這里要特別注意,注意,注意!??!(重要的說三遍);。如圖:
第三步:創(chuàng)建完成后你會(huì)在左邊的項(xiàng)目目錄中看到你新建的文件Localizable.strings,點(diǎn)擊這個(gè)文件,看右邊點(diǎn)擊點(diǎn)擊Localize,然后選擇一個(gè)你新添加的語言,之后再看右邊把選擇欄的語言都選擇上如圖
第四步:之后,就回到左邊,你會(huì)看到Localizable.strings有出現(xiàn)下拉的文件了,你下拉進(jìn)去就會(huì)看到你添加的語言文件,之后在對(duì)應(yīng)的文件內(nèi)添加對(duì)象名字和對(duì)象要顯示的什么語言,如圖
最后一步:就是在你需要顯示的地方去使用NSLocalizedString方法提取出來如圖
以上就是最基本的根據(jù)系統(tǒng)語言進(jìn)行語言的轉(zhuǎn)換。
下面是在一個(gè)APP改變多語言的常規(guī)做法
我分別寫了兩個(gè)按鈕button去控制我更改的語言,樣式需要怎么去做就看你的自己的設(shè)計(jì)圖了,方法大多數(shù)是一致的。
第一步先定義一個(gè)宏,這個(gè)宏的作用是去哪個(gè)語言文件拿對(duì)應(yīng)的中英文如圖
第二步,我之前有預(yù)先寫了兩個(gè)按鈕,當(dāng)我點(diǎn)擊英文就是把英文的代表符村進(jìn)來,點(diǎn)擊中文就是把中文代表符存進(jìn)來,如圖
以上就是最簡單的多語言選擇。
demo:
這里介紹的方法只是根據(jù)系統(tǒng)語言變化
demo
iOS 國際化多語言(下)
獲取Info.plist文件中key的方法: 選中Info.plist--右鍵選中Open As--Source Code
注意:選中Property List 恢復(fù)列表樣
注意: 如果創(chuàng)建.strings文件是自定義的名字的話,如Internation.strings,那么調(diào)用的方式為: NSLocalizedStringFromTable(@”English”,@”Internation”, nil) NSLocalizedStringFromTable(@”Authority”,@”Internation”, nil) 當(dāng)自定義名字后,使用NSLocalizedString的方式不起作用,這里要特別注意,注意,注意?。?!(重要的說三遍);
大額數(shù)字,在不同的語言中,表現(xiàn)形式可能不一樣。比如100w,在英語中是“1,000,000”這樣表示;而在西班牙語中表示為“1.000.000”;想實(shí)現(xiàn)大額數(shù)字顯示的國際化,可以按照如下步驟:
目前根據(jù)查閱資料只想到了這些,如果還有其它的或更好的方法,希望大家能多留言告知,后續(xù)也會(huì)更新~~~
??最近我們的iOS工程需要搞國際化,查資料學(xué)習(xí),靜下心思考最后完成這份方案。這份方案是為了先解決我司當(dāng)前需求,肯定不是最完美的,拋磚引玉,歡迎大家提出建議,為開源社會(huì)出一份力。
??先別BB那么多,搜這個(gè)問題的人肯定都是著急解決問題,我們先說怎么用,原理啥的感興趣后面再說!
??將MultiLanguage/Resources/Config.plist文件夾下的 RunFilterScript 字段設(shè)為YES,command +B 會(huì)彈出目錄選擇,選擇你要處理的文件夾。腳本運(yùn)行后在會(huì)在桌面生成multi-language.csv表格。將表格拿去給翻譯人員翻譯。
??表格內(nèi)目前是四列分別為 key , zh_CN , en_GB , ja_JP,如有擴(kuò)展,自行更改firstScript.py腳本即可。
??將MultiLanguage/Resources/Config.plist文件夾下的 RunScvToJsonScScript 字段設(shè)為YES,command +B ,選擇對(duì)應(yīng)csv文件轉(zhuǎn)換后,在桌面生成multi-language.json文件,將multi-language.json文件拖入主工程即可完成全部多語言配置。
??1.平時(shí)需要RunFilterScript和RunScvToJsonScScript字段設(shè)置為NO,這樣便不會(huì)執(zhí)行python腳本。
??2.為什么不直接生成和翻譯json文件?我們產(chǎn)品要求導(dǎo)出格式為表格,有其他格式需求可自行更改腳本。
??3.為什么不在腳本中使用google、百度、有道自動(dòng)翻譯?因?yàn)樽詣?dòng)翻譯目前不夠信、達(dá)、雅。如果有需要的小伙伴,可自行編輯腳本。
??4.在Xcode的buildLog中可以查看此組件運(yùn)行的log 。如下圖所示:
??5. github鏈接 ,歡迎大家提出改進(jìn)建議,使iOS項(xiàng)目國際化更加方便。
??6.大家若有好的想法或者集成上的問題可以在評(píng)論區(qū)交流