Это идеально, что я хотел бы сделать:
- Настройте проект в Xcode, используя базовую локализацию английского языка. В конечном счете, я хочу английский и скажу голландские версии моих
Localizable.strings
и раскадровки - Внешние строки в коде с
NSLocalizedString
, используя ключи формыfooViewController.barLabel
, прилежно и добавляя правильные комментарии к контексту с каждым ключом - Добавьте голландскую локализацию в мои файлы раскадровки.
- Отметьте определенные метки в Storyboard как заполнители, которые будут установлены во время выполнения и не требуют переводов.
- Добавить комментарии для ярлыков в раскадровке, которые требуют перевода
- Экспортируйте файл
xliff
"язык разработки" (нажмите "Проект, редактор/экспорт для локализации...", выберите "Только язык разработки" ) - Откройте английский
xliff
файл с помощью инструмента Counterparts или Xliffie или даже веб-сайт - Добавьте в себя английские переводы рядом с клавишами
fooViewController.barLabel
и заново сохраните en.xliff - Создайте файл
nl.xliff
из исходногоen.xliff
и добавьте голландские переводы - Импортируйте оба файла
xliff
в Xcode и создайте соответствующие файлы.strings
для голландского и английского языков как для ключей, определенных в коде, так и для тех, что находятся в Storyboard; зафиксировать новые.strings
файлы в моем исходном репозитории - В какой-то момент после добавления ключей, удаления и изменения в моем источнике и раскадровки, снова экспортируйте "Язык разработки"
en.xliff
в качестве источника истины - Обновите файлы
en.xliff
иnl.xliff
текущими переводами, выделив инструмент, какие ключи были добавлены или удалены. - Импортируйте те файлы
xliff
обратно в Xcode, который обновляет файлы.strings
, которые я могу проверить в моем исходном репозитории
Вот проблемы, с которыми я столкнулся:
- Xcode не поддерживает шаг 4 - формат
xliff
может пометить ключ какtranslate=no
, но не существует способа аннотировать его в Xcode (в идеале, Xcode не будет экспортировать ключи, помеченные как заполнители). - Xcode не поддерживает шаг 5 - невозможно установить комментарий транслятора для метки. Нет даже способа установить ключ независимо от текста заполнителя, который вы помещаете в ярлык на раскадровке, что является огромной болью, если вы найдете наклейки с надписью Lorem Ipsum полезно при планировании ваших взглядов.
- Когда вы переходите к шагу 10, Xcode жалуется, что в файле
en.xliff
нет целевого языка. Существует способ изменить целевой язык (или, по крайней мере, создать новый файл с целевым языком, установленным наEN
) в Counterparts, но я не смог найти способ сделать это с помощью Xliffie. - При попытке реэкспорта файла
en.xliff
с обновленными ключами Xcode сказал мне"Localization failed reading "[...]/Supporting Files/en.lproj/Localizable.strings, Please address the issue at file location 782"
, в каком месте символа я нашел... апостроф. Xcode не может экспортировать файлxliff
, если исходный файл.strings
содержит апостроф. Что в действительности F...?! - Шаг 12 и 13 стал странным, и я просто не понимаю, что происходит. Оба коллеги и Xliffie заменили мои оригинальные ключи
fooViewController.barLabel
английскими переводами и выглядели так, как будто они пытались сказать мне, что у меня нет английских переводов. При попытке импортироватьen.xliff
обратно в Xcode он сказал мне, что у меня не было никаких переводов для всех, кроме новых ключей, и когда я пошел дальше, он уничтожил существующие переводы из файлаen.lproj/Localization.strings
.
Это беспорядок.
Перевод ярлыков в раскадровки без возможности вручную устанавливать их ключи, добавлять комментарии переводчика или отмечать определенные метки, поскольку заполнители, не предназначенные для перевода, просто не работают. Мы прибегали к подключению каждой метки к @IBOutlet
и установке ее перевода в viewDidLoad()
с помощью NSLocalizedString
.
Устранение Xcode при попытке экспортировать файл .strings
, содержащий веру апострофа нищих.
Также кажется, что существует основополагающее предположение, что если "язык разработки" в Xcode является английским, тогда разработчики отвечают за перевод на английский язык. Я не могу представить себе контекста вне контекста магазина инди-инди-инди-индие, где это правда.
Наконец, похоже, что мне не хватает чего-то о том, как инструменты, которые я пытался использовать, структурируют их рабочие процессы. Если бы кто-нибудь мог просветить меня, я был бы очень благодарен.
Кто-нибудь смог создать рабочий рабочий процесс локализации, где разработчикам не поручено окончательное редактирование управления над "языком разработки", а файлы .strings
, проверенные в репозитории, являются источником правды?