Как стать автором
Обновить

Комментарии 17

На правах лайфхака — всё становится лучше с @IBInspectable
Хм. Как же я такое мог упустить! Спасибо за совет.
Вместо «User Defined Runtime Attributes» можно использовать IBInspectable свойства
Все равно не обойтись без файлов

Localizable.strings
InfoPlist.strings


Поскольку UILabel зачастую содержит не статичный текст.
Да, именно так. Однако, если текст статичный, лучше не выносить его в код.

Естественно, для локализации, описанным в статье способом, строки должны храниться в Localizable.strings как и в случае с программной локализацией. Все это по тому, что локализация, фактически, осуществляется программно. Она лишь скрыта таким образом, что создается ощущение редактирования обычных свойств в Interface Builder.
а в чем проблема сделать нормальную локализацию storyboard? никакого гемора, никаких лишних файлов… или я что то не понял?
Ответ на ваш вопрос находится в первом абзаце главы «Суть проблемы».

Если вкратце, то вы не можете закрепить перевод за какой-то конкретной View. Если вы ее переместите, перевод не переместится. Например, у вас на storyboard был ViewController и вы решили хранить его в отдельном XIB файле. Вы создаете отдельный XIB, перемещаете туда ViewController, но переводы не перемещаются. Мало того, для каждой View создастся новый идентификатор и вам придется подгонять идентификаторы строк вручную. Просто так скопировать переводы не получится.
почмему не получится… боже мой… без проблем всё перенесется. ) Storyboard с переводом может быть в двух состояниях, первый как тексты, воторй как отображения. Для переноса достаточно перевести ВСЕ переводы в режим отображения. Дальше дело техники. И да, при таких широченных возможностях storyboard'a возвращаться назад к XIB, смысла вообще никакого нет. И тем более ради этого код усложнять…
Перевод storyboard в режиме отображения несет в себе кучу проблем. Его нужно использовать только в крайних случаях, когда для какого либо языка нужно использовать немного иную разметку.

Мало того. В этом случае вам придется копировать каждый язык вручную. И быть внимательным, что бы не перепутать языки.
«Перевод storyboard в режиме отображения несет в себе кучу проблем.» каких например? Всегда можно вернуть режим текста после того как выдран View и перенесен из storyboard в xib. Это не односторонний процесс а обратимый без каких либо последствий.
«Перевод storyboard в режиме отображения несет в себе кучу проблем.» каких например?
Тем что у вас на каждый язык своя разметка и их всех нужно редактировать независимо друг от друга.
Если у нас своя разметка, тогда нет смысла переводить в текст, вы это понимаете? Значит вообще никаких проблем с копированием и переносом в XIB не будет.
Допустим у меня приложение переведено на 20 языков. Мой storyboard использует локализацию в разметке. Мне нужно подвинуть одну кнопочку на одном из ViewController. Мои действия?
Вообще надо так же сказать, что есть сторонние инструменты, для перевода всего Xcode проекта которые сами следят за айдишниками и генерят по основному файлу дополнительные с переводами. И да у Apple эта сторона проекта действительно далека от идеала. И таких мелких не идеальных вещей много и про них мало кто знает.
Я понимаю к чему вы клоните. Однако, описанный вами способ требует использования специальных инструментов. Будет замечательно если вы приведете ссылки на эти инструменты. Думаю, все скажут вам спасибо.
Ссылки сочтут за рекламу тех или иных продуктов, они есть и легко гуглятся.
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории