2016-03-11 2 views
0

Мне нравится, чтобы все строки были экстернализированы из Storyboard в файл строк. Для этого есть две причины.Экстернализация строк из раскадровки в XCode

Краткосрочный:

  • Я не родной, и это помогает мне дать этот файл кому-то, чтобы рассмотреть его и обновил его.

Долговременные:

  • Это поможет интернационализации.

Я прочитал как enable Base localization. Я это сделал. Тем не менее, я все еще озадачен двумя вещами

a) Почему все строки все еще находятся в раскадровке? Я ожидал их замены некоторыми ссылками на файл Main.strings.

Это беспокоит меня. Я могу случайно забыть и что-то изменить в Main.storyboard. Однако он будет перезаписан во время выполнения значениями из файла Main.strings.

b) Возможно, мне придется изменить интерфейс в раскадровке и добавить новые места, где должны использоваться строки. Как извлечь его в Main.strings. Я знаю, как сгенерировать этот файл, но не знаю, как его обновить.

+0

«Меня это беспокоит. Я могу случайно забыть и что-то изменить в Main.storyboard« Ну нет. Если вы это сделаете, вам придется восстановить файл строк. Это не происходит волшебным образом. Однако это очень просто, если вы используете новое поколение '.xliff'. – matt

ответ

2

Чтобы иметь больше локализаций, вы должны сначала добавить их в свой проект в настройках проекта. Затем вы сможете выбрать ранее добавленные локализации в свойствах раскадровки и создать файл .strings для раскадровки.

Каждый элемент раскадровки (например, UILabel) имеет идентификатор объекта раскадровки (например, GSX-Yv-hAx). Эти идентификаторы указаны в файле .strings раскадровки. Во время создания элемента из раскадровки его текст берется из соответствующего файла .strings (если он присутствует) по его идентификатору.

Вы не должны изменять ключи в файле сценария .strings, так как это нарушит ссылку локализованного текста на элемент раскадровки.

После изменения раскадровки (добавления нового элемента) вам нужно будет сгенерировать файл .strings. Вы можете сделать это, сняв флажок и снова проверить соответствующую локализацию раскадровки в свойствах раскадровки. После этого вам придется объединить файл с предыдущим состоянием.

+2

Итак, в сводке «снимите флажок localiztion, проверьте его снова, чтобы сгенерировать файл и слить изменения, которые у вас были» .. Wow ... Похоже, что XCode имеет нулевую автоматизацию вокруг локализации. –

+0

Да. А для базовой локализации - считается фактическое состояние раскадровки (например, текст, который вы прямо указываете в элементе), поэтому базовую локализацию вам не нужно будет генерировать. – DisableR

Смежные вопросы