iOS開發——高級技術&本地化與國際化詳解

本地化與國際化詳解
效果以下:
 
英語:                                                                    中文:



             

                      
具體實現以下:
 
一。先作準備:設置程序本地化
在xcode點擊程序圖標:點擊Info選項->Localizationn,點擊「+」,選擇要添加的語言,簡體中文選擇Chinese(zh-Hans)
你會在你工程目錄下發現多了個文件夾,「zh-Hans.lproj",x-code使用.lproj做爲其本地化文件夾的擴展名。

 

二。設置xib文件本地化,
圖像本地化的方法是同樣道理的,能夠根據用戶的顯示語言加載不一樣的xib文件
操做:點擊xib文件,在IB窗口中選擇選項選擇「File Inspecter",也就是第一個選項,選擇「Localization->"+"選擇添加的語言,
效果以下,原來的xib文件就會出現三角形,其下有兩個文件,由於個人爲storyboard,但效果是同樣的。就能夠實現將其本地化了,很是簡單吧

 


 

三。設置應用程序名本地化,
       設置應用程序名存儲在應用程序的Info.plist文件中,咱們例子實際上爲Localize-Info.plist,選擇文件,並不須要對文件進行 本地化,而是使"Info.strings"本地化就能夠了,在Localize.Info.plist,空白處右鍵,選擇Show Raw Keys/Values,就會看到應用程序名實際爲CFBundleDisplayName,咱們只須要在對應的 Info.plist中添加如下代碼就能夠了
英文版:C代碼
  1. CFBundleDisplayName = "Localization"; 
複製代碼

C代碼java

  1. CFBundleDisplayName = "本地化";
複製代碼


效果圖:



4、加載的字符串本地化,
       原理:在代碼中將加入的字符串加入NSLocalizeString宏中,啓動程序時,系統將根據語言加載相應的文件獲得其對應的字符串文件,這個字符 串能夠經過系統將NSLocalizedString中的宏生成名爲「Localizable.strings」的文件,固然你能夠本身去建立這個文件, 而後手動是添加對應的字符串。,
  1. labelName.text = NSLocalizedString(@"Name", @"The name is "); 
  2. labelPassword.text  = NSLocalizedString(@"Password:",@"The password is");
複製代碼
NSlocalizeString 第一個參數是內容,第二個參數將會轉化爲字符串文件裏的註釋。
轉化方法以下 :先關閉項目,打開終端,進入到項目的目錄,輸入genStrings 文件名.m就能夠將該文件中的宏轉化爲相應的字符串文件,

效果以下:會看到生成"Localizable.strings",
打開文件,就能夠交給翻譯人員去翻譯了





===================
一、本地化字符串,網上那些方法我就不說了,我只更正一點:若是你的Classes下面有子文件夾會報錯,使用下面的命令:
find . -name *.m | xargs genstrings -o /Users/apple/(你目標的文件夾)
二、本地化軟件的名字:
(1)在info.plist文件裏作以下設置:

 

(2)建立一個InfoPlist.strings文件,裏面寫以下內容:
"CFBundleDisplayName"="你軟件的名稱";
"CFBundleName"="你軟件的名稱";
(3)本地化這個文件便可。
三、本地化資源,沒必要細說了,網上資料不少,這裏我只說下個人疑惑:圖片資源貌似只能用zh-Hans。
四、本地化icon,目前不支持,因此不要費勁的去本地化icon了。
五、商店的本地化,也沒必要細說了,很簡單,按照蘋果須要的填就能夠了。
 




應用genstrings和NSLocalizedString實現App文本的本地化
Admin
2012年3月20日
xcode

App本地化的需要不消講大師也都熟悉打聽,本文將介紹一種簡單的辦法來實現字符串的本地化。

 

在不推敲本地化的景象下,咱們如果在代碼中給一個Button定義title,通常會如許寫:



btn.titleLable.text = @"Example Button";




app

也許咱們已經寫了很長的代碼才推敲到本地化的題目,大可沒必要頭疼,這時辰,咱們要作的是把代碼從頭掃一遍,而後把每一個會顯示給用戶看的字符串作以下批改:
(對於內部應用的字符串就用不着本地化了)



btn.titleLable.text = NSLocalizedString(@"btn_title", nil);


工具

NSLocalizedString是一個定義在NSBundle.h中的宏,其用處是尋找當前體系說話對應的Localizable.strings文件中的某個key的值。
第一個參數是key的名字,第二個參數是對這個「鍵值對」的註釋,在用genstrings對象生成Localizable.strings文件時會主動加上去。




到今朝爲止,咱們尚未生成Localizable.strings文件。這是一個逆向的過程,也就是先寫好調用過程,再生成strings資料文件。

 

當咱們把全部的.m文件都修發好了,就該genstrings對象出場了。
  1. 啓動終端,進入工程地點目次。
  2. 新建兩個目次,推薦放在資料目次下。
    目次名會感化到Localizable.strings文件對應的說話,不克不及寫錯了。這裏zh-Hans指簡體中文,重視不克不及用zh.lproj默示。



mkdir zh-Hans.lproj
mkdir en.lproj


spa

  3. 生成Localizable.strings文件



genstrings -o zh-Hans.lproj *.m
genstrings -o en.lproj *.m


翻譯

  -o <文件夾>,指定生成的Localizable.strings文件放置的目次。
  *.m,掃描全部的.m文件。這裏支撐的文件還包含.h, .java等。

 

  4. 右鍵點擊工程的Resources目次,選擇「New Group」,添加兩個目次zh-Hans.lproj和en.lproj。
  5. 在新建的group中添加方纔生成的Localizable.strings文件。
  6. 最後在Localizable.strings文件中,批改每一個key所對應的內容,就大功成功了。




說了一大堆,其實操縱起來仍是很簡單的,總的來說就是兩條:
  1. 在代碼裏用NSLocalizedString獲取要本地化的字符串
  2. 用genstrings掃描代碼文件,生成Localizable.strings,而後加到工程中。
 
 

五. 圖片和其餘資源文件

選中須要本地化的資源文件 -> 打開右邊工具欄(Utilites) -> 在「Localization」欄目加入須要支持的語言。xcode會把資源文件拷貝到新加入語言的的目錄下,把準備好的本地化文件替換掉xcode自動拷貝的文件便可。code

相關文章
相關標籤/搜索