поддержка мультиязычности iphone - PullRequest
0 голосов
/ 05 августа 2010

Я разрабатываю приложение для Iphone, которое должно поддерживать разные языки.

Я увидел, что язык должен быть установлен в моем приложении, а не в настройках iphone.Итак, я должен заставить язык вместо этого взять текущий?Я не нашел примеров в интернете.Все примеры нуждаются в текущем языке приложения.Я хотел бы, чтобы пользователь выбирал свой язык при запуске приложения, затем я установлю файл cookie и (каким-то образом, которого я не знаю) приложение автоматически ссылается на мои папки .lproj на разных языках.

Ответы [ 4 ]

1 голос
/ 05 августа 2010

IIRC, вы хотите NSLocalizedStringFromTable.

Вы создаете файл .strings для каждого языка: например, "EN.strings", "JP.strings" и т. Д. *

Эти файлыбудет загружаться из пакета по умолчанию с параметром таблицы в NSLocalizedStringFromTable.

Когда пользователь выбирает язык, вы переключаете из какой таблицы (файл .strings) загружать строки.

Одна проблемаЭто означает, что строки iOS будут по-прежнему локализованы в соответствии с настройками пользователя или с тем, к чему ваше приложение локализовано в Info.plist.Таким образом, вы можете получить смесь языков.

1 голос
/ 05 августа 2010

Это невозможно при использовании механизмов локализации по умолчанию в iOS.По умолчанию система выбирает папку .lproj в соответствии с системным языком пользователя и выполняет локализацию автоматически, если вы локализовали NIB и используете NSLocalizedString () и т.д ..

Если вы действительно хотите изменить это поведение и "переопределить системный язык, вы должны реализовать свою собственную версию NSLocalizedString, которая вручную обращается к файлу строк в нужной папке .lproj.Имейте в виду, что NIB не используют вашу пользовательскую функцию NSLocalizedString.Так что либо вообще не используйте NIB, либо выполняйте локализацию NIB в коде вместо использования разных NIB.

1 голос
/ 05 августа 2010

Ваш вопрос не очень ясен. Ничто не говорит о том, что «язык должен быть установлен в моем приложении, а не в настройках iphone» - на самом деле это совсем наоборот!

Какао имеет довольно аккуратную систему локализации, которая довольно проста в использовании (ворчит что-то о гнилых рабочих процессах локализации) . Вот полный скин - в основном, файлы в папках lproj, а затем используйте ресурсные API NSBundle, чтобы найти их (загрузка NIB и другие подсистемы используют его автоматически, так что вам даже не нужно работай там!).

0 голосов
/ 05 августа 2010
[[NSUserDefaults standardUserDefaults] setObject: [NSArray arrayWithObjects:@"it",@"en", nil] forKey:@"AppleLanguages"];

тогда, если язык iPhone установлен на английский, приложение для iPhone всегда будет работать с "it". первый из массива.

...