Какао/iPhone:Как мне запретить ibtool выводить нелокализуемые строки в xib-файле?
-
03-07-2019 - |
Вопрос
Я работаю над интернационализацией приложения для iPhone, и я использую ibtool для извлечения строки из моих xib-файлов, чтобы они могли быть переведены локализационным центром следующим образом:
ibtool --generate-strings-file BlahBlahView.strings English.lproj/BlahBlahView.xib
Проблема с этим заключается в том, что файл .strings, который я получаю в итоге, содержит ВСЕ строки, содержащиеся в xib, когда мне действительно нужно подмножество, которое меня действительно волнует для i18n.Есть ли какая-нибудь наилучшая практика для решения этой проблемы?В идеале я хотел бы иметь возможность добавить какую-то аннотацию в interface builder, в которой говорилось бы либо "Это локализуемо", либо "Это не локализуемо", и чтобы ibtool выводил локализуемые строки только при моем запуске.
Спасибо!
Редактировать:Хорошо, позвольте мне немного расширить параметры.Для решения не обязательно использовать только ibtool.Ibtool + некоторые данные в xib + сценарий оболочки в порядке.До тех пор, пока это работает!
Решение
Ibtool чрезвычайно подробен в выводе строковых файлов и генерирует stirngs по идентификатору объекта, а не по уникальной исходной строке.Этот тип вывода чрезвычайно полезен, когда вы пытаетесь воссоздать interface builder или иным образом нуждаетесь в обширном контроле над объектами в ваших xib-файлах, но в меньшей степени, когда вы просто хотите локализовать свое программное обеспечение.
Маттео из Digitalwaters.net нашел способ конвертировать выходные данные ibtool в формат, используемый nibtool, его предшественником, который был менее мощным, но намного проще в использовании для локализации.Подробная информация здесь.
Я переделал его сценарии, чтобы упростить локализацию нашего приложения для Mac OS X, и у меня они хорошо работают.Удачи :)
Другие советы
Я думаю, вы можете автоматизировать это, но для этого потребуется несколько шагов.Вы можете извлекать произвольные свойства из вашего xib с помощью ibtool, поэтому, возможно, вы могли бы присвоить тегу нелокализуемых элементов определенное значение (например, -1), затем извлечь теги и использовать их для фильтрации файла strings и удаления ненужных записей.
ознакомьтесь с справочной страницей ibtool, в частности с опцией -export.
ibtool
не выводит записи для пустых строк.Так, например, если вы оставите текст UILabel пустым, он не будет включен в выходные данные ibtool --generate-strings-file
.Затем вы можете задать текст элементов в контроллере представления.