Комментарии 17
На правах лайфхака — всё становится лучше с
@IBInspectable
+2
Вместо «User Defined Runtime Attributes» можно использовать IBInspectable свойства
0
Все равно не обойтись без файлов
Поскольку UILabel зачастую содержит не статичный текст.
Localizable.strings
InfoPlist.strings
Поскольку UILabel зачастую содержит не статичный текст.
0
Да, именно так. Однако, если текст статичный, лучше не выносить его в код.
Естественно, для локализации, описанным в статье способом, строки должны храниться в
Естественно, для локализации, описанным в статье способом, строки должны храниться в
Localizable.strings
как и в случае с программной локализацией. Все это по тому, что локализация, фактически, осуществляется программно. Она лишь скрыта таким образом, что создается ощущение редактирования обычных свойств в Interface Builder.0
а в чем проблема сделать нормальную локализацию storyboard? никакого гемора, никаких лишних файлов… или я что то не понял?
0
Ответ на ваш вопрос находится в первом абзаце главы «Суть проблемы».
Если вкратце, то вы не можете закрепить перевод за какой-то конкретной View. Если вы ее переместите, перевод не переместится. Например, у вас на storyboard был ViewController и вы решили хранить его в отдельном XIB файле. Вы создаете отдельный XIB, перемещаете туда ViewController, но переводы не перемещаются. Мало того, для каждой View создастся новый идентификатор и вам придется подгонять идентификаторы строк вручную. Просто так скопировать переводы не получится.
Если вкратце, то вы не можете закрепить перевод за какой-то конкретной View. Если вы ее переместите, перевод не переместится. Например, у вас на storyboard был ViewController и вы решили хранить его в отдельном XIB файле. Вы создаете отдельный XIB, перемещаете туда ViewController, но переводы не перемещаются. Мало того, для каждой View создастся новый идентификатор и вам придется подгонять идентификаторы строк вручную. Просто так скопировать переводы не получится.
0
почмему не получится… боже мой… без проблем всё перенесется. ) Storyboard с переводом может быть в двух состояниях, первый как тексты, воторй как отображения. Для переноса достаточно перевести ВСЕ переводы в режим отображения. Дальше дело техники. И да, при таких широченных возможностях storyboard'a возвращаться назад к XIB, смысла вообще никакого нет. И тем более ради этого код усложнять…
0
Перевод storyboard в режиме отображения несет в себе кучу проблем. Его нужно использовать только в крайних случаях, когда для какого либо языка нужно использовать немного иную разметку.
Мало того. В этом случае вам придется копировать каждый язык вручную. И быть внимательным, что бы не перепутать языки.
Мало того. В этом случае вам придется копировать каждый язык вручную. И быть внимательным, что бы не перепутать языки.
0
«Перевод storyboard в режиме отображения несет в себе кучу проблем.» каких например? Всегда можно вернуть режим текста после того как выдран View и перенесен из storyboard в xib. Это не односторонний процесс а обратимый без каких либо последствий.
0
«Перевод storyboard в режиме отображения несет в себе кучу проблем.» каких например?Тем что у вас на каждый язык своя разметка и их всех нужно редактировать независимо друг от друга.
0
Если у нас своя разметка, тогда нет смысла переводить в текст, вы это понимаете? Значит вообще никаких проблем с копированием и переносом в XIB не будет.
0
Вообще надо так же сказать, что есть сторонние инструменты, для перевода всего Xcode проекта которые сами следят за айдишниками и генерят по основному файлу дополнительные с переводами. И да у Apple эта сторона проекта действительно далека от идеала. И таких мелких не идеальных вещей много и про них мало кто знает.
0
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Удобная локализация iOS приложений в Interface Builder