как установить язык по умолчанию, если языковой ключ не найден в cfbundlelocalizations - PullRequest
0 голосов
/ 21 января 2019

Чтобы получить собственные всплывающие окна iOS на разных языках, я добавил поддерживаемые языки в info.plist, как показано ниже

info.plist содержимое

При этом, если я выберу языки французский, английский, испанский, итальянский или немецкий. Я могу получить всплывающие окна iOS на соответствующих языках. Но если выбран какой-либо другой язык, он зависит от «Предпочтительного языкового порядка» в настройках iPad.

Как выбрать язык по умолчанию на английском, если выбран язык, отличный от указанного выше? Например, если я выбираю португальский язык, мне нужен язык по умолчанию - английский. т.е. родные всплывающие окна должны появляться на английском языке. Заранее спасибо.

Я также попытался добавить следующее

Пробный код

Ничего из вышеперечисленного не сработало.

если я выбираю язык португальский (не упомянут в info.plist), мне нужен язык по умолчанию - английский. т.е. родные всплывающие окна должны отображаться на английском языке.

1 Ответ

0 голосов
/ 22 января 2019

Причина:

Кажется, iOS разработал языковой порядок. Я проверил демо локализации на моей стороне, и я получаю вывод ниже:

  1. если я выберу языки, которые я использовал в своем проекте, я смогу получить соответствующий язык.
  2. если я выберу язык, который я не реализовал в моем проекте, iOS выберет язык в Preferred language order, если он найдет соответствующий язык в Preferred language order, он выберет язык как вы язык приложения. ( Это вызвало вашу проблему )
  3. Если он не может найти соответствующий язык, который вы внедрили в свой проект, iOS будет использовать язык, который вы определили для CFBundleDevelopmentRegion, в качестве языка по умолчанию.

Решение:

Вы можете решить, какой язык использовать в вашем коде. Получите current language телефона и выберите language с current language, который вы получите в своей собственной логике.

 string[] languages = NSLocale.PreferredLanguages;

 // GET you current language in setting
 NSString language = new NSString(languages[0]);

 NSString esStr = new NSString("es");
 NSString jaStr = new NSString("ja");
 NSString frStr = new NSString("fr");

 //decide here which language to use
 if (language.HasPrefix(esStr))
 {
     //do in Spanish
 }
 else if (language.HasPrefix(jaStr))
 {
     //do in japanese
 }
 else if (language.HasPrefix(frStr))
 {
     //do in french
 }
 else {
     // SET your language to english here as default language
 }
...