1. 程式人生 > >iOS開發:App國際化配置過程

iOS開發:App國際化配置過程

       在iOS開發過程中難免會遇到App要設定別的國家的語言,這就設計到國際化配置,那麼本篇博文就來講講App怎麼快速進行國際化配置。App語言國際化,也叫語言本地化,根據使用者使用的作業系統的語言設定,自動將App的語言設定成和使用者使用的作業系統的語言一致的語言。

一、配置需要國際化的語言

首先,根據具體需求來配置需要使用到的國際化的語言,國際語言種類很多,沒有必要全部都加上,根據實際需求選擇性新增幾種需要用到的語言即可。不管我們是國際化App的名稱、介面中的字串文字資訊,還是圖片、圖示,都需要先進行配置準備工作,具體步驟如下所示:

1、開啟專案工程,找到選中PROJECT-->Info-->Localizations,然後點選“+”,然後新增需要國際化/本地化的語言,(預設需要勾選下面的“Use Base Internationalization”);


2、這裡以新增德語為例,點選加好之後,找到德語選項,然後彈出一個對話方塊,直接點選“Finish”即可,同理,其他需要新增的語言也是按照這種操作步驟進行;




3、之前的舊版本xcode在設定本地化App名稱的時候,還需要在Info.plist檔案中新增一個名為“Application has localized display name”的BOOL型別的Key,還需要把它的值設定為YES,之所以這樣做就是為了讓App支援本地化App名稱,但是現在可以忽略這一步,具體設定如下所示(只給有需要的人看):



二、App名稱的國際化/本地化設定

1、選中Info.plist,然後使用快捷鍵command + n,新建檔案,然後選擇Strings File型別的檔案(iOS-->Resource-->Strings File);

2、檔名字必須要命名為首字母大寫的“InfoPlist”,就算是首字母小寫也不行,如果不按照這個名字來,你絕對設定不成功的!然後檔名後面在建立成功之後會自動生成字尾,這裡不用擔心,只要把檔名字寫對就行了;

3、點選create之後,xcode左側導航列表裡就會新出現一個名為InfoPlist.strings的檔案,然後選中這個檔名,在xcode的File inspection點選Localize,這樣做是為了選擇需要的本地化語言;

4、點選Localize之後,會彈出一個提示對話方塊,展開對話方塊列表,發現下拉列表所展示的所有語言就是我們需要國際化的語言,選擇需要本地化的語言,然後點選對話方塊的Localize按鈕,然後依次把需要的語言都按照這種方法選中新增即可;

5、然後在新增完的國際化語言列表裡面全部勾選剛才新增的國際化語言列表,然後再回去Xcode左側的InfoPlist.strings的檔案下面多了子檔案,然後點選箭頭展開,會發現新增的幾個國際化語言檔案;

6、然後在InfoPlist.strings下面所有的國際化語言檔案裡面分別新增對應的App名字,比如英語型別裡面,就寫:CFBundleDisplayName = "English"; //English就是App英文的名字;

7、依次在剩下的幾種語言裡面分別新增對應的App本地化名字即可。具體圖解步驟如下所示:









三、專案詳情中字串的本地化處理

       字串本地化處理,就是App裡面的字串在不同的語言下顯示對應語言的內容,eg:"我的"這個詞語在簡體中文語言環境下就顯示“我的”,在英語環境下就顯示“Me"。其實字串本地化和App名稱本地化的過程一模一樣,只不過建立的檔名字不一樣罷了,這裡的字串本地化建立的檔名字必須是:Localizable,錯一個字母都不行,首字母小寫也不行,不然就不會成功本地化處理。

1、與App名稱本地化建立檔案的步驟一樣,使用快捷鍵command + n,新建檔案,然後選擇Strings File型別的檔案(iOS-->Resource-->Strings File);

2、檔名必須命名為Localizable,檔案建立成功之後,檢視xcode左側多出來一個名為Localizable.strings的檔案,然後選中該檔案,在xcode的File inspection點選Localize;

3、點選Localize之後,會彈出一個提示對話方塊,展開對話方塊列表,發現下拉列表所展示的所有語言就是我們需要國際化的語言,選擇需要本地化的語言,然後點選對話方塊的Localize按鈕,然後依次把需要的語言都按照這種方法選中新增即可;

4、然後在新增完的國際化語言列表裡面全部勾選剛才新增的國際化語言列表,然後再回去Xcode左側的Localizable.strings的檔案下面多了子檔案,然後點選箭頭展開,會發現新增的幾個國際化語言檔案;

5、然後在Localizable.strings下面所有的國際化語言檔案裡面,分別以鍵值對的形式在程式碼中給每一個需要本地化的字串賦值,比如英語裡面:"home" = "Home",那麼簡體中文裡面:"home" = "主頁" ,依次在每個對應的語言檔案裡面新增該鍵值對對應的值;

6、為了方便起見,直接使用Foundation框架系統自帶的巨集來根據Key獲取對應的字串,然後賦值給程式碼中字串,這個巨集是:#define NSLocalizedString(key, comment) [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil]

7、具體在程式碼裡呼叫:

NSString *cart = NSLocalizedString(@"cart", nil);

self.title = cart;

這裡就不再發全部截圖,以上步驟截圖可以參照App名字本地化的那些步驟來就行,下面只發一下不一樣部分的截圖:



四、圖片設定本地化配置

      圖片設定本地化和Localizable.strings類似,圖片資源存放在Images.xcassets裡,使用時將不同語言的圖片資源在Localizable.strings裡一一對應設定,如下所示:

Localizable.strings (English)
"imageName" = "pic-e";

Localizable.strings (Chinese(Simplified))
"imageName" = "pic-c"; 

五、貨幣值設定本地化配置

      貨幣顯示在不同的國家是有區別的,例如:100000可以寫作"100,000"也能寫作"100.000"。針對這種情況可以使用NSNumberFormatter格式化,例如:

NSNumberFormatter *numberFor = [[NSNumberFormatter alloc] init];

[numberFor setNumberStyle:NSNumberFormatterDecimalStyle];

NSString *numberString = [numberFor stringFromNumber:@(100000)];

testLabel.text = [NSString stringWithFormat:NSLocalizedString(@"testNum:%@", nil), numberString];

六、Xcode 8 許可權提示語國際化/本地化配置

       配置許可權國際化和配置應用程式名字國際化一樣,具體Key值如下:

NSMicrophoneUsageDescription                  麥克風許可權

NSCameraUsageDescription                         相機許可權

NSPhotoLibraryUsageDescription                  相簿許可權

NSBluetoothPeripheralUsageDescription       藍芽許可權

NSSpeechRecognitionUsageDescription      語音轉文字許可權

NSCalendarsUsageDescription                      日曆許可權

NSLocationWhenInUseUsageDescription      定位許可權

NSLocationAlwaysUsageDescription            定位許可權

以上就是本篇全部內容,歡迎關注三掌櫃微信公眾號,歡迎關注!