iOS 設定App的名稱
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:
2.InfoPlist.strings->CFBundleDisplayName
這種方法較為繁瑣,但是可以支援多語言版本名稱的設定,即Localization,也先看具體步驟:
-
新建一個Strings File,命名應該不一定非得是InfoPlist.strings,應該是沿用習慣。
-
點選工程-PROJECT-Info-Localizations,新增簡體中文支援,如果想支援繁體,也可繼續新增,其他語言亦然。
-
點選之前建立的InfoPlist.strings - 點選右邊的“Localizion”- 新增簡體中文
可以選擇支援英文
-
分別設定中英文名字
"CFBundleDisplayName" = "中文名字";
"CFBundleDisplayName" = "EnglishName";
名字字串自己填寫就好,這裡只是示範
-
編譯工程
分別切換模擬器的設定中的語言至中英文模式,分別檢視appiocn下面的名字的變化:
3.關於預設語言的設定:Localization native development region
Xcode建立工程時,預設語言環境是英文,所以在呼叫一些系統空間時(例如相機相簿),其控制按鍵的標題都是英文顯示的狀態,快速的設定方法就是設定Localization native development region的值,具體步驟可以參考此文:
4. Localizations版本國際化
這個就是為了讓APP支援多國語言環境,最好的Demo應該是環信的官方Demo,這裡只是介紹一下簡單的用法:
-
同新增InfoPlist.strings的做法相同,新增一個Localizable.strings檔案
-
對應中英文(其他語言自行新增),分別新增下列語句:
1 2 3 4 5 6 7 8 9 |
"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。
實際用例:
1 2 3 4 5 6 7 |
- (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中的示範: