Возможно ли обновить локализованные строки раскадровки?
Я локализовал часть своего приложения с созданием раскадровки 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, чтобы предотвратить непредвиденные изменения.
- Перейдите на целевой экран в xcode и нажмите
Editor
→ Export For Localization...
Сохраните файл ar.xliff где-нибудь. - Скачать XLIFF Edtior.
- Откройте файл ar.xliff и внесите изменения.
- Импортируйте этот файл в 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?". диалога, установите флажок "Удалить локализованные файлы ресурсов с диска". Затем строковый файл будет удален. Установите флажок еще раз, чтобы добавить новый строковый файл, вы получите последний файл со всем добавленным текстом.