Я локализовал часть своего приложения, создав раскадровку base.lproj и 3 строковых файла. Это было месяц назад, и после этого я добавил новый контроллер представления в приложение, но кнопки и метки этого контроллера не отображаются в строковых файлах.
Можно ли обновить эти 3 прикрепленных файла строки раскадровки или я должен добавить новые переводы строк программно с использованием NSLocalizableString и Localizable.strings?
ios
xcode
string
localization
storyboard
жёлтое
источник
источник
Ответы:
Есть два варианта:
Опция 1
Xcode может «перезагрузить» файл путем преобразования файла в тип файла [Interface Builder Cocoa Touch Storyboard] или в тип файла [Localizable Strings] .
Вариант 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
источник
Проверьте BartyCrouch , он отлично решит вашу проблему. Также он с открытым исходным кодом , активно поддерживается и может быть легко установлен и интегрирован в ваш проект.
Установите BartyCrouch через Homebrew :
Или установите его через Mint :
Поэтапно обновить раскадровки / файлы XIBs Строки:
Это сделает именно то, что вы искали.
Для того , чтобы сохранить свои раскадровки / XIBs Струна файлов обновляется с течением времени я настоятельно рекомендую добавить скрипт сборки (инструкции о том , как добавить скрипт сборки здесь ):
В дополнение к постепенному обновлению файлов Storyboards / XIBs Strings это также гарантирует, что ваши
Localizable.strings
файлы будут обновляться с использованием недавно добавленных ключей в кодеNSLocalizedString
и отображать предупреждения для дублированных ключей или пустых значений.Обязательно закажите BartyCrouch на GitHub или эту подробную статью для получения дополнительной информации.
источник
Вы можете вручную добавить ключ в свой файл локализации. Вы можете найти ключевой объект, выбрав его в редакторе раскадровки. Давайте посмотрим на
Object-ID
личность инспектора. Это выглядит как"nwc-b2-19c"
На вашей локализации обновите или добавьте перевод. Например :
источник
Этот не для всех, но он не требует дополнительных инструментов в терминале, и это легко для небольших ручных изменений. (Не учитывайте это, когда хотите автоматизировать свой процесс.)
Шаг 0: Настройка языка раскадровки
Этот шаг выполняется только один раз.
Теперь, когда я добавляю что-то в раскадровку, я делаю следующее
Шаг 1: добавьте файл локализуемых английских строк
просто отметьте английскую позицию.
Это создает совершенно новый английский локализуемый файл строк со всеми строками
Шаг 2: скопируйте новые позиции в другие языковые файлы
и перевести их
Шаг 3: снять отметку с английского, удалить соответствующий файл локализуемых строк
файл нужен только для получения новых позиций
Это простой и быстрый процесс, все делается в редакторе раскадровки.
Редактировать:
Этот процесс очень хорошо работает с небольшими раскадровками. Например, у меня есть проект на основе вкладок и раскадровка для каждой вкладки.
Ищите «справочник раскадровки», чтобы найти учебники.
Хороший пример: ссылка на раскадровку в Xcode, где мы должны ее использовать?
Таким образом, каждая небольшая раскадровка имеет только несколько строк для локализации.
источник
Наконец, моим решением было (элементарно, но эффективно) скопировать предыдущие переводы и вставить их в новый файл, созданный снятием флажка и установкой флажка «Локализация».
Это было бы полезно в некоторых случаях, таких как мой, когда вам нужно изменить только один или два текста.
источник
Я думаю, что лучше всего использовать встроенные локализации экспорта / импорта:
PS Если вы не хотите редактировать в XLIFF Editor и пропустили шаг 3, XCode не может сохранить новые строки. В этом случае откройте .xliff в XLIFF Editor, повторно сохраните без изменений и импортируйте новый файл.
источник
/* Class = "UILabel"; text = "a basic text"; ObjectID = "HFW-aN-MTb"; */
, но новая метка НЕ создается в файле Main.strings. Затем я отредактировал файл .xliff, чтобы добавить перевод для новой метки. Я импортировал это снова. Новая метка теперь вставлена в файл Main.strings.Когда вы щелкаете в раскадровке, например, в Main.storyboard ... Справа вы видите меню локализации (см. Прикрепленное изображение). Если вы снимите флажок и еще раз проверьте язык, файл будет сгенерирован снова. Поэтому я обычно копирую содержимое, снова генерирую файл и затем вставляю содержимое, которое я скопировал и уже перевел.
Это способ, которым я использую для обновления словаря.
источник
Я получил огромную раскадровку с множеством строк. Два языка основаны на английском и другом арабском. Задача состояла в том, чтобы добавить некоторые поля и метки в раскадровку и добавить для них локализацию без каких-либо сценариев и NSLocalizableStrings.
Для меня помогло следующее:
Первое : убедитесь, что у вас есть git, чтобы предотвратить непредвиденные изменения.
Editor
->Export For Localization...
. Сохраните файл ar.xliff где-нибудь.источник
Существует
приложениекомандной строки от Apple под названием AppleGlot, которое поддерживает пошаговую локализацию. Я еще не пробовал, но выглядит точно так же, как инструмент, который вы искали (некоторое время назад).источник
appleglot
Инструмент работает с конечными пучками приложений. Это совершенно другой подход для приложений перевода.Вот скрипт для извлечения строк из раскадровок и xibs и объединения их с существующими переводами.
Для автоматического запуска сценария при создании проекта поместите сценарий в корневой каталог проекта и добавьте этап « Выполнить сценарий» со следующей строкой к целевым этапам сборки в настройках проекта.
Или вы можете запустить скрипт на Терминале вручную, когда захотите.
Сценарий работает так,
ibtool
как ответил Та Леанг. Он также работаетgenstrings
для извлечения и слияния строк, отмеченныхNSLocalizedString
в вашем исходном коде. Сценарий основан на сценарии в этом посте , который объединяет строки после запускаgenstrings
.источник
Самый простой и очень менее рискованный подход - просто скопируйте идентификатор объекта из раскадровки и добавьте новый ключ для ключа в локализованном файле, как показано ниже:
1: Скопируйте идентификатор объекта, как показано ниже, из раскадровки для компонента:
2: Добавить новый ключ в локализованный файл, как показано ниже:
Примечание. Это очень менее рискованный подход, если вы хотите обновить только несколько компонентов, в противном случае вы можете воссоздать локализованный файл для раскадровки.
источник
Xlifftool доступен как приложение для Mac и хорошо работает. Он показывает все переводимые строки и объекты из info.plist, локализуемые строки и раскадровку.
Получить его здесь для Mac: https://itunes.apple.com/lv/app/xlifftool/id1074282695?mt=12
Шаг 1: в Xcode выберите папку вашего проекта в навигаторе проекта. Затем выберите Редактор / Экспорт для локализации ...
Ваши переводимые строки будут включены в файл xliff на языке, который вы выбрали для локализации в Xcode.
Шаг 2: Откройте этот файл с помощью xlifftool и переведите или обновите ваши переводы, которые были сделаны ранее.
Шаг 3: Затем загрузите обратно в свой проект с помощью редактора / Импорт локализаций ...
источник
Это мой простой способ обновить новый текст из раскадровки или XIB в строку локализации
1 - используйте этот скрипт http://tredje.se/dev/trouble/?x=entry:entry150917-204052
2- выберите строку локализации, которую вы хотите обновить, и переключите строку языка с «Строка локализации» на «Раскадровка интерфейса разработчика»
3- переключи обратно :)
Готово.
источник
Вариант 1
XCode может «перезагрузить» файл путем преобразования файла либо в
[Interface Builder Cocoa Touch Storyboard]
тип файла, либо в тип[Localizable Strings]
файла.Выберите базовый файл раскадровки в Навигаторе проекта. Найдите раздел « Локализация » в Инспекторе файлов . Если ваш файл в настоящее время является
[Localizable Strings]
, измените его[Interface Builder Cocoa Touch Storyboard]
или наоборот.Xcode должен был преобразовать вашу раскадровку в текущую версию, сохраняя при этом ваши старые усилия по локализации. Здесь вы можете изменить файл обратно на исходный тип файла, если хотите.
Вариант 2
Используйте
ibtool
для извлечения строк в вашей раскадровке.Откройте приложение Terminal.
Найдите свой
Base.lproj
каталог.Используйте эту строку для извлечения строк:
После того, как ibtool извлечет строки
file_name.strings
, вы можете скопировать и вставить их в исходный.strings
файл.источник