iOS: 設定App的國際化和本地化

來源:互聯網
上載者:User

標籤:

原文連結:http://www.cocoachina.com/appstore/20160310/15632.html

前言

App的名字設定方式有很多種,如果在App打包上線時不做修改,最終App的名字就是Xcode在建立工程時的名字。好的習慣是工程建立時使用英文(pinyin),那麼App也就是“英文”名字了,雖然Xcode也支援直接用中文命名工程(甚至是方法名……),但有時也會因此產生一些不必要的麻煩甚至莫名其妙的bug。
本文主要介紹兩種設定App名稱的方法,第一種較為簡單,第二種涉及簡單的版本國際化與本地化(Localization)的問題。筆者對於兩個方法的認知也是較為基礎的,如有不妥之處,還望斧正。

1.Bundle display name

先看此方法的具體設定步驟:

  • 建立工程如下,如果不設定App名,預設的App名就是工程名了。

  • 點擊工程-TARGETS-Info,添加“Bundle display name”,string值填寫要設定的App名稱。

 

  • 再次編譯,效果如下,這個方法就是這麼簡單了。

 

具體也沒太多好說的,檢索App名稱設定時,大部分答案也是這個,因為比較簡單。

這裡提一下Bundle name和Bundle display name:

Bundle name - is folder name, where your app (including executable file and all resources) will be stored (Cool Program.app)。建議不要修改bundle name
Bundle display name - is what will be shown on iPhone screen,即當你安裝該app到iPhone上顯示的name。
注意:Bundle Display name must correspond to Bundle name,即bundle display name和bundle name不能相差太遠。例如bundle name設定為 TheApplication, 而 bundle display name設定為“金****瓶*****梅”,則apple會拒絕你的app。

 

2.InfoPlist.strings->CFBundleDisplayName

這種方法較為繁瑣,但是可以支援多語言版本名稱的設定,即Localization,也先看具體步驟:

  • 建立一個Strings File,命名應該不一定非得是InfoPlist.strings,應該是沿用習慣。

  • 點擊工程-PROJECT-Info-Localizations,添加簡體中文支援,如果想支援繁體,也可繼續添加,其他語言亦然。

  • 點擊之前建立的InfoPlist.strings - 點擊右邊的“Localizion”- 添加簡體中文

  可以選擇支援英文

  • 分別設定中英文名字

    "CFBundleDisplayName" = "中文名字";

    "CFBundleDisplayName" = "EnglishName";

    名字字串自己填寫就好,這裡只是示範

  • 編譯工程

可能需要在plist檔案中添加Application has localized display name鍵,設定為YES

分別切換模擬器的設定中的語言至中英文模式,分別查看appiocn下面的名字的變化:

3.關於預設語言的設定:Localization native development region

Xcode建立工程時,預設語言環境是英文,所以在調用一些系統空間時(例如相機相簿),其控制按鍵的標題都是英文顯示的狀態,快速的設定方法就是設定Localization native development region的值,具體步驟可以參考此文:Localization native development region 更改語言無效 中的第一段內容。

4. Localizations版本國際化

這個就是為了讓APP支援多國語言環境,最好的Demo應該是環信的官方Demo,這裡只是介紹一下簡單的用法:

  1. 同添加InfoPlist.strings的做法相同,添加一個Localizable.strings檔案

  2. 對應中英文(其他語言自行添加),分別添加下列語句:

"alertTitle" = "標題";"alertMessage" = "資訊";"alertOk" = "確認";"alertOther" = "其他"; "alertTitle" = "title";"alertMessage" = "message";"alertOk" = "confirm";"alertOther" = "other";

關於上述的key和value,只是示範,可自行定義,調用這些key-value需要利用NSLocalizedString(<#key#>, <#comment#>)系統宏,例如:NSLocalizedString(@"alertTitle", @"這是一句註解,根據情況寫"),第一個參數即在strings檔案中自訂的key,根據不同的語言環境,系統會自動檢測這個key對應的value(中文還是英文),第二個參數是注釋,為了便於理解,可以為nil。
實際用例:

- (void)createAlertViewWithTitle:(NSString *)title message:(NSString *)message delegate:(id)delegate cancel:(NSString *)cancel andOther:(NSString *)other  {      UIAlertView * alert = [[UIAlertView alloc] initWithTitle:title message:message delegate:delegate cancelButtonTitle:cancel otherButtonTitles:other, nil];      [alert show];  }  //調用  [self createAlertViewWithTitle:NSLocalizedString(@"alertTitle", @"這是一句註解,根據情況寫") message:NSLocalizedString(@"alertMessage", @"") delegate:nil cancel:NSLocalizedString(@"alertOk", nil) andOther:NSLocalizedString(@"alertOther", nil)];

分別設定系統的語言環境至中英文模式,效果如下:

上面的寫法看起來比習慣上直接寫string去設定標題要麻煩許多,但是常用的標題可以進行二次宏定義管理,那樣不僅使用方便,還便於統一管理。
看一下環信Demo中的示範:

本文只是簡單介紹相關的用法,至於詳細的說明,可以參考文章最後列出的參考文章,裡面有不少不錯的詳細講義。

參考文章:

  • Localization native development region 更改語言無效

  • 在iOS中如何設定預設語言

  • Xcode 6 關於 iOS App 國際化問題

  • iOS學習之iOS程式名稱及內容國際化(本地化)

  • 如何修改已完成的工程的app名?

  • 如何修改iOS APP的項目名稱

  • iOS修改app名稱

  • iOS Xcode如何修改應用的名稱

  • 請問如何修改app顯示的名字?

  • Bundle Name and Bundle Display Name

  • iOS應用國際化教程(2014版)

 

 

 

iOS: 設定App的國際化和本地化

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.