Файл .phrase.yml
используется для хранения повторно используемых аргументов командной строки.
Поддерживаемые аргументы:
-
project_id
идентификатор проекта.
-
file_format
формат файла, используемый в тех случаях, когда он не указан явно в записях оригинала и перевода.
-
per_page
количество элементов, возвращенных в виде постраничных ответов.
Образец файла конфигурации.
Push
$ phrase push
Команда push
загружает файлы, найденные в локальных каталогах проектов. Используйте файл .phrase.yml
, чтобы указать файлы для загрузки и задать любые дополнительные параметры. Заполнитель <tag>
также можно использовать для скачивания ключей в отдельные файлы на основе их тегов.
Pull
$ phrase pull
Аналогично команде push
, за исключением того, что нельзя использовать подстановку исключений. Используя заполнители, используйте по возможности <locale_name>
. Чтобы получить файл с ключами, имеющими определенный тег, используйте параметр tags
:
phrase: pull: targets: - file: path/to/file/<locale_name>.yml params: tags:tag_name
Чтобы использовать заполнитель <tag>
, нужные теги должны быть указаны в разделе params
.
Параметры
Команды push
и pull
можно настроить в файле .phrase.yml
. Параметры push такие же, как для конечной точки интерфейса приложений API uploads
и pull — как и для конечной точки интерфейса приложений API locales download
.
Пример с push:
push: sources: - file: ./locales/en.json params: update_translations: true
Пример с pull:
pull: targets: - file: "./locales/example.yml" params: include_unverified_translations: true
В зависимости от формата файла, в разделе параметров можно указать параметры формата. Параметры формата можно применять как к загрузке, так и к скачиванию.
Примеры формата:
params: format_options: convert_placeholder: true
Некоторые форматы файлов обеспечивают больший контроль над синтаксисом файлов:
phrase: pull: targets: - file: file.xml params: format_options: convert_placeholder: true push: sources: - file: file.csv params: format_options: column_separator: ";"
Следующие заполнители и операторы подстановки можно разместить в путях записей файлов:
-
<locale_name>
Уникальное название языкового стандарта.
-
<locale_code>
Идентификатор языковых стандартов, совместимый с RFC 5646. Код языкового стандарта не обязательно должен быть уникальным, поэтому с одним и тем же кодом может существовать несколько языковых стандартов с разными названиями.
-
<tag>
Используйте теги для группировки ключей. Теги можно использовать для сохранения исходной структуры файла.
Подстановка (Globbing)
*
и **
— операторы подстановки. Одна звездочка *
пропускает любую папку по пути. Двойная звездочка **
похожа на стандартный оператор подстановки и соответствует любому символу для рекурсивного, неисчерпывающего совпадения.
Примеры:
# a file pattern ./abc/**/*.yml
# with a few files on your system ./abc/defg/en.yml ./abc/es.yml ./fr.yml
# selects ./abc/defg/en.yml ./abc/es.yml
Используя команду pull
, чтобы скачать файлы, укажите явный шаблон файла, например./abc/defg/<locale_name>.yml
вместо ./**/*.yml
.
Все загрузки обрабатываются асинхронно. Чтобы дождаться загрузки, примените пометку --wait
. Push
будет ждать, пока каждый загруженный файл будет возвращен независимо от того, удалось это или нет.
Загрузите файл по указанному языковому стандарту
Загрузите файл en.json
в каталог ./locales/
с данным locale_id
(языковой стандарт уже должен существовать).
Update_translations
имеет значение false, поэтому импортируются только новые ключи и переводы. Если этот параметр имеет значение true, клиент также импортирует локальные изменения в существующие переводы, записывая любой уже существующий контент.
phrase: access_token: ACCESS_TOKEN project_id: PROJECT_ID file_format: nested_json push: sources: - file: ./locales/en.json params: update_translations: false locale_id: YOUR_LOCALE_ID # the locale must exist remotely
Примечание
Невозможно удалить импортированные записи перевода. При необходимости обновите переводы до значений empty
через соответствующую конечную точку интерфейса приложений API.
Ruby on Rails: загрузить файл указанного типа
Загрузить все файлы, заканчивающиеся на .yml
, расположенные в ./config/locales/
. YAML- файлы Ruby on Rails содержат информацию о языковом стандарте, поэтому нет необходимости указывать языковой стандарт в явном виде. Update_translations
соответствует true, поэтому все изменения в переводах будут импортированы с перезаписью всех существующих данных.
phrase: push: sources: - file: ./config/locales/*.yml params: update_translations: true file_format: yml
Совпадение Strings iOS
Для совпадения всех файлов iOS Strings с файлами Localizable.strings
в папках .lproj
.
<locale_code>
— это всё, что совпадает после /
и перед .lproj
, чтобы создать и идентифицировать языковые стандарты.
Параметр update_translations
пропущен и имеет те же последствия, что и при установке значения false .
phrase: push: sources: - file: "./<locale_code>.lproj/Localizable.strings" params: file_format: strings
Ведение нескольких проектов Strings для одного проекта локализации
Редактируйте файл конфигурации, чтобы ограничить область проектов, разделив переводы на небольшие категории.
Измените файл конфигурации в соответствии с требованиями, затем проверьте его в системе управления оригиналами или и системе контроля версий.
Rails
phrase: access_token: ACCESS_TOKEN project_id: PROJECT_ID file_format: "yml" push: sources: - file: "./config/locales/*.yml" pull: targets: - file: "./config/locales/<locale_name>.yml"
iOS Strings
phrase: access_token: ACCESS_TOKEN project_id: PROJECT_ID file_format: "strings" push: sources: - file: "./<locale_code>.lproj/Localizable.strings" pull: targets: - file: "./<locale_code>.lproj/Localizable.strings" - file: "./<locale_code>.lproj/Localizable.stringsdict" params: #file_format can be overwritten file_format: "stringsdict"
Android XML
Android не использует стандартные коды языка ISO в качестве шаблона файла. Укажите требуемый шаблон в .phrase.yml
.
phrase: access_token: ACCESS_TOKEN project_id: PROJECT_ID file_format: "xml" push: sources: - file: "./res/values-<locale_code>/strings.xml" pull: targets: - file: "./res/values-<locale_code>/strings.xml"
Пример с английским языком по умолчанию, немецким языковым стандартом и немецким региональным языковым стандартом для австрийского немецкого языка:
phrase: access_token: ACCESS_TOKEN project_id: PROJECT_ID file_format: xml pull: targets: - file: ./app/src/main/res/values/strings.xml params: file_format: xml # Unique locale id for English locale_id: LOCALE_ID - file: ./app/src/main/res/values-de/strings.xml params: file_format: xml # Unique locale id for German locale_id: LOCALE_ID - file: ./app/src/main/res/values-de-rAU/strings.xml params: file_format: xml # Unique locale id for Austrian locale_id: LOCALE_ID push: sources: - file: ./app/src/main/res/values/strings.xml params: file_format: xml locale_id: LOCALE_ID - file: ./app/src/main/res/values-de/strings.xml params: file_format: xml locale_id: LOCALE_ID - file: ./app/src/main/res/values-de-rAU/strings.xml params: file_format: xml locale_id: LOCALE_ID