(Xcode 3)
Процесс локализации приложений в Mac OS легок и прост, когда знаешь, что делать. Исполняемый файл программы отделен от локализованных ресурсов (текстов, изображений, звуков), сгруппированных по отдельным папкам. Локализованные ресурсы хранятся в отдельной .lproj директории для каждого поддерживаемого языка. Папки .lproj названы согласно спецификациям ISO. Содержимое всех таких папок должно быть одинаковым.
В региональных настройках Mac OS вы указываете свой основной язык и список дополнительных языков. В случае, если приложение не поддерживает ваш основной язык, то будет использоваться язык из указанного списка. Если ни для одного из указанных языков не было найдено файлов перевода, то приложение будет использовать язык, указанный по умолчанию при разработке программы. Это значение указывается в переменной “Localization native development region” (эквивалент в xml-варианте - CFBundleDevelopmentRegion) в файле Info.plist.
Пример структуры локализованного приложения (Mac, iPhone, iPad..)
Calculator.app/ сборка (bundle) Contents/ MacOS/ Calculator исполняемый файл Info.plist Resources/ папка с ресурсами Calculator.icns tapeButton.tif не локализованные ресурсы English.lproj/ папка с ресурсами, локализованными для англоязычной аудитории Localizable.strings динамически отображаемые строки Calculator.nib интерфейс приложения CalculatorHelp/ файлы документации и помощи ru.lproj/ папка с ресурсами, локализованными для русскоязычной аудитории Localizable.strings Calculator.nib CalculatorHelp/ ...
XCode берет на себя работу по созданию lproj директорий. При нажатии правой кнопкой на Info.strings выбираем Get Info, далее нажимаем Add Localization и пишем, например, для русского язык - ru (всё по ISO).
Важный момент. Локализацию English удалять не стоит, иначе другие локализации перестанут добавляться. English и en одно и то же. Получаем:
Если умеете читать по-английски(при этом понимая, что вы читаете), вам сюда.
Важный момент. Локализацию English удалять не стоит, иначе другие локализации перестанут добавляться. English и en одно и то же. Получаем:
Теперь у нас в раскрывающемся списке InfoPlist.strings будет English и ru.
Значения всех ключей (CFBundleName, CFBundleDisplayName и т.д.). Добавим в ru пару ключей:
* If you localize this key(CFBundleDisplayName), you should also include a localized version of the
Затем для нашего примера добавим в ..info.plist, если отсутствуют, следующие ключи (нажав Add Row) со значением ${PRODUCT_NAME}:
CFBundleName
key.Затем для нашего примера добавим в ..info.plist, если отсутствуют, следующие ключи (нажав Add Row) со значением ${PRODUCT_NAME}:
Чтобы увидеть результат проделанной работы необходимо изменить язык системы и перезапустить Finder, сделать это можно с помощью выхода из системы (Log Out).
В Finder'е:
И там сверху:
Если умеете читать по-английски(при этом понимая, что вы читаете), вам сюда.
Добрый день!
ОтветитьУдалитьИнтересная статья.
Хотелось бы уточнить напоследок:
Свойство "Localization native development... " установлено в дефолтное значение en.
Это значит, что для всех файлов, для которых не найдена локализация, будут использованы файлы из этой папки? (en в моем примере).
таким образом, приложение может быть переведено частично (не все языки будут поддерживаться в некоторых частях приложения) ?