多語言本地化戏仓,是我們在做IOS項目的時候經(jīng)常用的,下面根據(jù)自己的經(jīng)驗和使用場景籽腕,來全面的說說多語言本地化的解決方案爱葵。
首先我們要明白本地化的原理和過程施戴,才能更好的理解本地化的方案,本地化主要包括下面幾個部分:
本地化應用程序名稱
本地化字符串
本地化圖片
本地化其他文件
一萌丈、本地化應用程序名稱赞哗,這個只有一種方案:
點擊“new file”然后在彈出窗口左側選擇IOS的resource項,在右側就可以看到“String File”的圖標辆雾。創(chuàng)建這個文件肪笋,命名為“InfoPlist”(一定是這個文件名) 就生成一個InfoPlist.strings文件;
選中InfoPlist.strings 點擊 XCode-> View-> Utilities -> File Inspector,在Localization中點“+”度迂,添加chinese (zh-Hans)類型的為簡體中文藤乙,english 應該會自動添加上。然后在InfoPlish.strings 左邊會多出一個三角形惭墓,點擊展開后可以看到InfoPlish.strings(english)和InfoPlish.strings(chinese)兩個版本的文件坛梁;
在InfoPlish.strings(english)文件中加入:
CFBundleDisplayName ="Program"; 其中“Program”為英文應用程序名稱,同理在InfoPlish.strings(chinese)文件中加入:
CFBundleDisplayName ="應用程序"; 其中“應用程序”為中文名稱腊凶,注意:CFBundleDisplayName加不加雙引號都行
編輯Info.plist罚勾,添加一個新的屬性Application has localized display name, 設置其類型為boolean,并將其value設置為YES即可
二吭狡、本地化字符串和本地化圖片的解決方案有下面兩種:
程序中提供給用戶自己選擇的機會,用戶可以使用按鈕等方式自有切換語言丈莺,和當前系統(tǒng)的語言沒有關系划煮;
根據(jù)當前用戶當前移動設備的語言自動將我們的app切換對應語言。
第一種做法看似比較簡缔俄,當時其實想靈活實現(xiàn)也需要費點心思弛秋,具體的實現(xiàn)方法如下:
創(chuàng)建多個strings文件器躏,名字不能用
Localizable.strings。
多個strings文件如:English.strings/Chinese.strings/German.strings等等蟹略。
每個文件中的內(nèi)容和寫法與Localizable.strings類似登失。
使用方式:
NSLocalizedStringFromTable(@"start",@"Chinese", nil) 。
根據(jù)用戶的操作挖炬,來更新頁面的多語言顯示揽浙。
圖片的本地化,不同語言獲取不同的圖片名稱即可意敛。
第二種做法馅巷,主要分一下幾點:
類似“本地化應用程序名稱”第一步,點擊“new file”然后在彈出窗口左側選擇IOS的resource項草姻,在右側就可以看到“String File”的圖標钓猬。創(chuàng)建這個文件,命名為“Localizable”(一定是這個文件名否則后面調用會有一些區(qū)別)就生成一個Localizable.strings文件撩独;
類似“本地化應用程序名稱”第二第三步敞曹,在Localizable.strings(english)文件中加入:
"welcome"="Click on the screen to continue...";
同理在Localizable.strings(chinese)文件中加入:
"welcome"="點擊屏幕繼續(xù)...";
在代碼中使用NSLocalizedString(<#key#>, <#comment#>)來讀取本地化字符串。
注:圖片的本地化综膀, 這里不同語言的圖片的名稱要一樣澳迫,但是要放到不同的語言文件夾中。
三僧须、本地化其他文件
本地化其他文件和本地化圖片第二種方法類似纲刀,先在Localization中添加語言,然后把對應版本拷貝到en.lproj和zh-Hans.lproj文件夾中担平,最后引用就行了示绊。