Это идеально, что я хотел бы сделать:
- Настройте проект в 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, проверенные в репозитории, являются источником правды?