2017-02-22 7 views
-1

У меня есть приложение, которое должно быть локализовано.Выполнение локализации

После возился с настройками на некоторое время, мне удалось получить проект в состояние, в котором он строит каталог nl.lproj (среди других) в Resources каталоге приложения пачки, который содержит MainMenu.strings файла, который содержит все мои переводы; они кажутся правильными на первый взгляд.

Файл XIB отмечен как переводимые, и, кажется, часть правой цели:

xib localization settings

Однако, если я запустить приложение в голландской среде, локализованные строки не отображаются в пользовательский интерфейс. Я добавил

NSLocale *loc = [NSLocale autoupdatingCurrentLocale]; 
NSString *lang = [loc languageCode]; 
NSLog(@"Current language: %@",lang); 

чтобы убедиться, что голландский язык активен, и это так.

This question предлагает, чтобы очистка, сопровождаемая перестройкой приложения, устраняла такие проблемы. Я пробовал это, но это не решило проблему.

Как я могу понять, почему мое приложение не переводится? Что еще может пойти не так? Есть ли какая-либо диагностика, которую я могу проверить?

Данное приложение относится к категории с открытым кодом, и его можно найти на странице https://github.com/Fedict/eid-mw. Выберите цель «eID Viewer» и создайте ее, чтобы узнать, что происходит.

+0

Покажите нам, как вы устанавливаете локализованную строку в объект NSTextField или что-то еще. –

+0

@ElTomato обновил вопрос, чтобы показать это. –

ответ

0

Оказывается, что локализация поддерживается OSX 10.8 и выше. Мое приложение выбрало 10.7 в качестве цели развертывания (нам нужно поддерживать несколько более старых версий OSX). При переключении цели развертывания на 10.8 появляются переводы.

+0

Спасибо. Я рад, что указал вам в правильном направлении. Все лучшее для вашей локализации приложений. – valeCocoa

0

Вам нужно вызвать файл .strings с именем «Localizable.strings». И добавьте целевой язык (в инспекторе) и заполните файл целевого языка.

+0

Я уже все это сделал. «Localizable.strings» пуст, так как я никогда не использую никакого вызова NSLocalizedString (или что он еще раз), но каталоги .lproj содержат файлы MainMenu.strings, и они имеют обязательные строки. Однако они не отображаются в локализованных файлах .xib. –

1

Есть две разные вещи с локализацией. Один из них - локализация пользовательского интерфейса. Это делается путем проверки этих полей, а затем редактирования строковых файлов в диалоговом окне под xib-файлом. Window for localization of UI Window with the UI localization strings

Вторая локализация Userfacing строк в коде. Это делается с помощью макроса NSLocalizedString(@"*key*", *comment*);, где ключ - это ключ, а комментарий - предоставленный комментарий для цели локализации. enter image description here

Эти строки можно отредактировать в файле Localizable.strings.

Здесь ссылка для начинающего Tutorial. И Apple Docs

Для активации функции отладки в Xcode для локализованных строк: передайте в -NSShowNonLocalizedStrings YES в качестве аргумента запуска в Xcode. Вы найдете его под Product/Scheme/Редактировать Схема -Arguments enter image description here Надеюсь, что это помогает

+0

Ваш скриншот подсказывает, что приложение может повесить трубку перед ее запуском. –

+0

Спасибо за ввод. Вы правы, курсор вводит в заблуждение. – voltae

+0

Спасибо за указатели на документацию и объяснение того, как это * предполагается * работать. Я уже все это нашел. Мой вопрос не в том, «как это делается»; речь идет о «если вы делаете то, что говорят документы, и оно не работает, как вы его отлаживаете». Я, вероятно, упустил что-то очевидное здесь, но мое приложение, которое * должно * быть переведено, не является. Я не использую 'NSLocalizedString()', поскольку он не нужен для моего приложения, но локализация файла xib. Я проверил все нужные поля (я думаю), но он все еще не работает. Я не понимаю, как это исправить ... –

0

Пытались ли вы чек с pseudolocalozations? Правильно ли вы настраиваете язык и регион на своем Mac? Вы также пытаются запускать его специально на голландском из XCode:

Чтобы запустить приложение на определенном языке и регионе

  1. Нажмите цель в меню назначения Run и выберите Редактировать Схема.

  2. Справа выберите Функции.

  3. При необходимости выберите язык во всплывающем меню «Язык приложения».

  4. При необходимости выберите регион из всплывающего меню Область приложения.

  5. Нажмите кнопку Закрыть.

  6. Нажмите «Запустить», чтобы запустить приложение в указанном вами регионе и регионе.

+0

Интересно. Когда я пытаюсь запустить мое приложение с псевдолокализацией двойной длины, это также не сработает. Не уверен, почему, но, по крайней мере, это прогресс ... –

+0

Так как это привело меня на правильный путь к выяснению, что было не так (даже псевдоколокалы не сработали ...), я собираюсь назначить вам щедрость. Благодаря! –

Смежные вопросы