Возможно ли обновить локализованные строки раскадровки?

Я локализовал часть своего приложения с созданием раскадровки base.lproj и трех строковых файлов. Это было месяц назад, и после этого я добавил новый контроллер просмотра в приложение, но эти кнопки и метки контроллера не отображаются в строковых файлах

Можно ли обновить эти 3 строковые файлы с раскадрой рамкой, или я должен добавить новые переводы строк программно с помощью NSLocalizableString и Localizable.strings?

Ответ 1

Есть два варианта:

Вариант 1

Xcode может "перезагрузить" файл, преобразовывая файл в файл типа [Interface Builder Cocoa Touch Storyboard] или тип файла [Localizable Strings].

  • Выберите файл базовой раскадровки из Навигатора проектов
  • Найдите раздел "Локализация" в "Инспекторе файлов"
  • Если ваш файл в настоящий момент является [Localizable Strings], измените его на [Interface Builder Cocoa Touch Storyboard] или наоборот.
  • Xcode должен был преобразовать вашу раскадровку в текущую версию, сохраняя при этом ваши старые усилия по локализации. Здесь вы можете изменить файл на исходный тип файла, если хотите.

Вариант 2

Используйте ibtool для извлечения строк в раскадровке.

  • Откройте приложение терминала
  • Найдите каталог Base.lproj
  • Используйте эту строку для извлечения строк:

    ibtool MainStoryboard.storyboard --generate-strings-file file_name.strings

  • После того, как ibtool извлекает строки в file_name.strings, вы можете скопировать и вставить его в исходный файл .strings

Посетите дополнительную информацию: https://conyac.cc/business/columns/localization_guide_ios

Ответ 2

Проверьте BartyCrouch, он отлично решит вашу проблему. Также он с открытым исходным кодом, активно поддерживается и может быть легко установлен и интегрирован в ваш проект.


Установите BartyCrouch через Homebrew:

brew install bartycrouch

Кроме того, установите его через Mint:

mint install Flinesoft/BartyCrouch

Инкрементно обновляйте файлы Storyboards/XIBs Strings:

$ bartycrouch update

Это сделает именно то, что вы искали.


Для того, чтобы сохранить свои раскадровки /XIBs Струна файлы обновляются с течением времени я настоятельно рекомендую добавить скрипт сборки (инструкции о том, как добавить скрипт сборки здесь):

if which bartycrouch > /dev/null; then
    bartycrouch update -x
    bartycrouch lint -x
else
    echo "warning: BartyCrouch not installed, download it from https://github.com/Flinesoft/BartyCrouch"
fi

В дополнение к постепенному обновлению файлов Storyboards/XIBs Strings это также гарантирует, что ваши файлы Localizable.strings обновляться новыми добавленными ключами в коде с использованием NSLocalizedString и будут отображать предупреждения для дублированных ключей или пустых значений.

Обязательно закажите BartyCrouch на GitHub или эту подробную статью для получения дополнительной информации.

Ответ 3

Вы можете вручную добавить ключ в свой файл локализации. Вы можете найти ключевой объект, выбрав его в редакторе раскадровки. Посмотрите Object-ID в инспекторе идентификации. Он выглядит как "nwc-b2-19c"

В вашем обновлении локализации или добавлении перевода. Например:

"nwc-b2-19c.title" = "Translated title";

Ответ 4

Этот не для всех, но он не требует никаких дополнительных инструментов в терминале, и это легко для небольших ручных изменений. (Не учитывайте это, когда хотите автоматизировать свой процесс.)

Шаг 0: Настройка языка раскадровки

  • База (с английскими текстами)
  • Английский (файл локализуемых строк не существует, так как базовый файл английский)
  • другие языки (файлы локализуемых строк)

base configuration

Этот шаг выполняется только один раз.

Теперь, когда я добавляю что-то в раскадровку, я делаю следующее

Шаг 1: добавьте файл локализуемых английских строк

Add English

просто отметьте английскую позицию.

Это создает совершенно новый английский локализуемый файл строк со всеми строками

Шаг 2: скопируйте новые позиции в другие языковые файлы

и перевести их

Шаг 3: снять отметку с английского, удалить соответствующий файл локализуемых строк

файл был нужен только для получения новых позиций

Это простой и быстрый процесс, все делается в редакторе раскадровки

Редактировать:

Этот процесс очень хорошо работает с небольшими раскадровками. Например, у меня есть проект на основе вкладок и раскадровка для каждой вкладки.

Ищите "справочник раскадровки", чтобы найти учебники.

Хороший пример: ссылка на раскадровку в Xcode, где мы должны ее использовать?

Таким образом, каждая маленькая раскадровка имеет только несколько строк для локализации.

Ответ 5

Наконец, мое решение было (рудиментарно, но эффективно) копировать предыдущие переводы и вставлять их в новый файл, созданный путем снятия отметки и проверки поля языка локализации.

Это было бы полезно в некоторых случаях, таких как мои, когда вам нужно изменить только один или два текста.

Ответ 6

Я думаю, что лучший способ - использовать встроенные локализации экспорта/импорта:

  • В Project Navigator выберете папку проекта
  • Выберите "Редактор" > "Экспорт для локализации",
  • Все переводы оставлены на своих местах, а XCode автоматически добавляет пропущенные строки. Кроме того, перед импортом вы можете отредактировать .xliff в редакторе XLIFF (например, онлайн - http://xliff.brightec.co.uk), а затем вам не нужно делать это в XCode.
  • затем Редактоp > Импортировать локализацию и выбрать сохраненный файл .xliff.

P.S. Если вы не хотите редактировать в редакторе XLIFF и пропустили шаг 3, XCode может не сохранять новые строки. В этом случае откройте .xliff в редакторе XLIFF, заново сохраните без изменений и импортируйте новый файл.

Ответ 7

Когда вы нажимаете на раскадровке, например на Main.storyboard... Справа вы видите меню локализации (см. Прикрепленное изображение). Если вы снимите галочку и еще раз отметите язык, файл будет сгенерирован снова. Поэтому я обычно копирую содержимое, снова генерирую файл и затем вставляю содержимое, которое я скопировал и уже перевел.

Это способ, которым я использую для обновления словаря.

enter image description here

Ответ 8

Вот a script, чтобы извлечь строки из раскадровки и xibs и объединить их с существующими переводами.

Чтобы запустить script автоматически при создании проекта, поместите script в корневой каталог проекта и добавьте фазу Запустить script со следующей строкой в ​​целевой сборке фазы в настройках вашего проекта.

./mergegenstrings.py PathToSourceDir

Или вы можете запустить script на терминале вручную, когда захотите.

script запускает ibtool, как ответил Та Лэнг. Он также запускает genstrings для извлечения и объединения строк, помеченных NSLocalizedString в исходном коде. script основан на a script в этом сообщении, который объединяет строки после запуска genstrings.

Ответ 9

У меня там огромная раскадровка с множеством строк. Два языка основаны на английском и другом арабском. Задача состояла в том, чтобы добавить некоторые поля и метки в раскадровку и добавить для них локализацию без каких-либо сценариев и NSLocalizableStrings.

Для меня помогло следующее:

Первое: убедитесь, что у вас есть git, чтобы предотвратить непредвиденные изменения.

  1. Перейдите на целевой экран в xcode и нажмите EditorExport For Localization... Сохраните файл ar.xliff где-нибудь.
  2. Скачать XLIFF Edtior.
  3. Откройте файл ar.xliff и внесите изменения.
  4. Импортируйте этот файл в xcode. Готово! Вы обновили файл строк раскадровки.

Ответ 10

Существует приложение инструмент командной строки из Apple с именем AppleGlot, который поддерживает инкрементную локализацию. Я еще не пробовал, но он выглядит точно так же, как инструмент, который вы искали (некоторое время назад).

Ответ 11

Самый простой и очень менее рискованный подход - просто скопируйте идентификатор объекта из раскадровки и добавьте новый ключ для ключа в локализованном файле, как показано ниже:

1: Скопируйте идентификатор объекта, как показано ниже, из раскадровки для компонента:

enter image description here

2: Добавить новый ключ в локализованный файл, как показано ниже:

"DjF-dn-0ay.text" = "Borrar datos y restablecer";

Примечание. Это очень менее рискованный подход, если вы хотите обновить только несколько компонентов, в противном случае вы можете воссоздать локализованный файл для раскадровки.

Ответ 12

Это мой простой способ обновить новый текст из раскадровки или xib до строки локализации

1- используйте этот script http://tredje.se/dev/trouble/?x=entry:entry150917-204052

2- выберите строку локализации, которую вы хотите обновить, и переключите свою языковую строку с "Строка локализации" на "раскладной сборщик интерфейса"

3- переключите его обратно:)

Готово.

введите описание изображения здесь

Ответ 13

Вы можете снять флажок с языка. При нажатии кнопки "Вы хотите удалить локализацию английского языка для Main.storyboard?". диалога, установите флажок "Удалить локализованные файлы ресурсов с диска". Затем строковый файл будет удален. Установите флажок еще раз, чтобы добавить новый строковый файл, вы получите последний файл со всем добавленным текстом.