Многоязычный iApp в сложной / особой среде - PullRequest
2 голосов
/ 30 мая 2011

Существует множество учебных пособий, в которых рассказывается о том, как писать многоязычные приложения для iPhone. Я не нашел ни одного, который бы касался моей конкретной проблемы ...

Должен быть способ, которым приложение для iPhone может применять определенный язык по умолчанию, если пользователь запускает iPhone без языков, поддерживаемых приложением?

Здесь, в Швейцарии, мы говорим на немецком, французском и итальянском языках (в разных частях страны). Немецкий язык можно считать языком «по умолчанию», потому что его доля составляет почти 65%. Следовательно, любой национальный ритейлер имеет описания своих продуктов на этих трех языках. Мы создали приложение iApp, которое поддерживает эти три языка.

Пока все хорошо ... пока пользователи выбирают любой из трех языков в своих настройках iPhone, все работает как положено. Для пользователей, которые используют iPhone на английском языке, что, по-видимому, является значительным числом, это идет не так, потому что приложение отображается на французском языке, а не на немецком (предполагаемый язык по умолчанию).

Почему? Потому что французский по умолчанию выше в списке доступных языков в настройках iPhone, чем немецкий. Обходной путь для пользователей - переключить iPhone с английского на немецкий и обратно. IPhone занял второе место в списке доступных языков.

Как приложение должно справиться с этим? Ах, конечно, мы могли бы поддерживать английский язык для элементов пользовательского интерфейса, но описания продуктов наших клиентов просто не доступны на английском языке. Следовательно, это не совсем вариант.

Ответы [ 2 ]

1 голос
/ 30 мая 2011

Вы можете позволить пользователю выбрать, какой язык использовать в приложении, и установить его следующим образом:

NSArray *lang = [NSArray arrayWithObjects:@"de", nil];
[[NSUserDefaults standardUserDefaults] setObject:lang forKey:@"AppleLanguages"];
1 голос
/ 30 мая 2011

Я придумал ту же проблему некоторое время назад. Мой способ решения этой проблемы состоял в том, чтобы установить все локализуемые элементы программно и вообще не полагаться на локализацию iOS. Я реализовал свой собственный менеджер языков, который обрабатывает локализованные строки (считанные из файла пользовательских ресурсов) и пытается выбрать лучший язык для текущего устройства (используя правила, предоставленные в файле пользовательских настроек). Конечно, если текущий предпочтительный язык устройства доступен среди локализаций, он имеет самый высокий приоритет. Я также оставляю возможность изменить язык в настройках.

...