你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發基礎 >> iOS8多語言備選規則

iOS8多語言備選規則

編輯:IOS開發基礎

近期伊書突然接到一些外國用戶的投訴,說伊書界面變成了中文,但他們系統語言不是中文,是法文俄文日文等,伊書只支持中文跟英文,在不支持系統所用語言的時候,理應會自動選用英文,不知為什麼會選成了中文,經過艱難困苦的重重排查,終於找到原因,知道了iOS多語言備選的規則。

主要有兩個影響因素,一是CFBundleDevelopmentRegion(Info.plist的一個字段),二是iOS8新增的系統首選語言列表:

language.png

在iOS7及之前版本,系統只能設置一種語言,如果APP不支持系統設置的語言,選用備選語言的規則是:
1.如果APP支持英文,直接選擇英文
2.如果APP不支持英文,隨機挑選一個,不清楚這裡挑選的規則。文檔上說會選用CFBundleDevelopmentRegion設置的語言,但我測試後發現並沒有,系統直接忽略了這個字段。

舉個例子,APP支持中文跟英文,當系統語言是不是中文或英文時,都會選擇英文。若APP支持中文跟日文,系統語言不是中文或日文,將會隨機挑選一個。

從iOS8開始,系統語言可以設置一個語言列表,會根據這個語言列表的排序選用備選語言,規則就變了:

1.如果APP支持的語言在系統語言列表裡有,優先選擇列表上排序靠前的語言。
2.如果APP支持的語言沒在系統語言列表上,按CFBundleDevelopmentRegion的值選擇,無論APP是否支持英文,英文不再是默認的備選語言。

舉個例子,APP支持中文跟英文,CFBundleDevelopmentRegion的值是中文,當系統語言列表是[日文]或[日文,中文]時,會選擇中文,系統語言列表是[日文,英文]時,會選擇英文。

蘋果在語言方面似乎有不少bug,調試過程中出現不少坑爹的事,例如改變增刪語言文件一定要clean工程否則不生效,iOS8模擬器不認 CFBundleDevelopmentRegion的值,真機才認,再加上一開始不知道iOS8系統語言變成列表這事,把我迷惑得費了大量時間。總而言之,若要國際化,讓APP支持英文,CFBundleDevelopmentRegion填英文,應該萬無一失。

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved