изменить язык

как изменить язык в приложении iPhone?.

я имею в виду, например: в моем приложении есть одна метка, я хочу поставить голландское слово. какой простой способ.

  1. читать из файла свойств

  2. сделать один статический класс в проекте со строковой переменной.

или возможно любое изменение в файле свойств.

Пожалуйста, помогите мне... спасибо и всем привет


person Community    schedule 17.07.2009    source источник
comment
Вы можете обратиться к главе 17 в книге «Начало разработки iPhone».   -  person Chilly Zhong    schedule 17.07.2009


Ответы (1)


Для этого создана тонна инфраструктуры. По сути, API-интерфейсы NSBundle имеют концепцию локализации и прозрачно перенаправляют все, что проходит через них, на соответствующим образом локализованную версию, если она доступна. Если вы когда-либо видели «.lproj» в своем комплекте, это для локализации.

Итак, вопрос в том, как вы это настроили? С nibs это легко, вы просто помещаете несколько копий пера в свое приложение, по одной в каждый lproj. Со строками немного сложнее: вы создаете файл Strings.localizable, а затем всякий раз, когда вам нужна строка, вы получаете ее, вызывая NSLocalizedString(), который будет искать строку в файле Localized.strings вашего текущий язык.

В Xcode есть несколько встроенных способов быстрой настройки. Вы можете выбрать любой ресурс и открыть окно «Информация», там будет кнопка «Сделать локализуемым». После того, как вы нажмете, появится еще одна кнопка «Добавить локализации», которая позволяет добавить в проект определенные локализации. На этом этапе рядом с вашим ресурсом появится треугольник раскрытия, который позволит вам редактировать ресурс в каждой конкретной локали.

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

Вы должны помнить, что если вы просматриваете локализацию и вручную решаете, какие ресурсы использовать на ее основе, вы, вероятно, делаете это неправильно. В большинстве случаев вы просто хотите определить место, которое требует локализации, и запросить у системы ресурс через API, который обрабатывает это за вас (NSLocalizedString(), -[NSBundle pathForResource:ofType:] и т. д.).

person Louis Gerbarg    schedule 17.07.2009
comment
есть проблема с этим подходом. Предположим, пользователь iphone настроен на немецкий язык, а приложение не имеет локализации для немецкого языка. Что случается? как указать приложению использовать язык по умолчанию, если текущий язык не переведен? - person Duck; 24.09.2009
comment
Вот почему вы должны использовать встроенную инфраструктуру, она подходит для вас. В частности, телефон просматривает имеющиеся у вас локализации и выбирает наилучшую из возможных, основываясь на предпочтениях пользователей. Если ваше приложение имеет только одну локализацию, она будет использоваться независимо от того, что указал пользователь, поскольку она единственная доступная. - person Louis Gerbarg; 24.09.2009