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.
Примечание
Все параметры конечной точки API uploads поддерживаются для команды push.
Все параметры конечной точки API locales download поддерживаются для команды pull.
Пример с 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 # языковой стандарт должен существовать удаленно
Примечание
Невозможно удалить импортированные записи перевода. При необходимости обновите переводы до значений 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 может быть переопределен
file_format: "stringsdict"
Android XML
Android не использует стандартные коды языка ISO в качестве шаблона файла. Укажите требуемый шаблон в .phrase.yml.
Вместо определения отдельной цели для каждого языкового стандарта, используйте глобальную настройку locale_mapping, комбинируя с заполнителем <locale_name>. CLI будет использовать пользовательское имя из сопоставления для соответствующего языкового стандарта и вернется к коду языкового стандарта по умолчанию для всех других языков.
Пример:
phrase:
access_token: ACCESS_TOKEN
project_id: PROJECT_ID
file_format: "xml"
# Сопоставьте языковые стандарты Phrase с именами каталогов, специфичными для Android
locale_mapping:
en-US: values
de-DE: values-de-rDE
fr-FR: values-fr
push:
sources:
# Исходный файл является языком по умолчанию, сопоставленным с 'values'
- file: ./app/src/main/res/values/strings.xml
params:
locale_id: en-US # Должен соответствовать исходному языковому стандарту в Phrase
pull:
targets:
# Используйте <locale_name> заполнитель, который будет заменен на соответствие
- файл: ./app/src/main/res/<locale_name>/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
# Уникальный идентификатор языкового стандарта для английского
locale_id: LOCALE_ID
- файл: ./app/src/main/res/values-de/strings.xml
params:
file_format: xml
# Уникальный идентификатор языкового стандарта для немецкого
locale_id: LOCALE_ID
- файл: ./app/src/main/res/values-de-rAU/strings.xml
params:
file_format: xml
# Уникальный идентификатор языкового стандарта для австрийского
locale_id: LOCALE_ID
push:
sources:
- file: ./app/src/main/res/values/strings.xml
params:
file_format: xml
locale_id: LOCALE_ID
- файл: ./app/src/main/res/values-de/strings.xml
params:
file_format: xml
locale_id: LOCALE_ID
- файл: ./app/src/main/res/values-de-rAU/strings.xml
params:
file_format: xml
locale_id: LOCALE_ID
Пример для нескольких платформ
Автоматически отправляйте и получайте переводы для нескольких целей в одной конфигурации.
phrase:
access_token: ACCESS_TOKEN
project_id: PROJECT_ID
file_format: nested_json
push:
sources:
# Web JSON
- файл: "apps/web/src/assets/i18n/.json"
params:
file_format: nested_json
locale_id: LOCALE_ID
# Android XML
- файл: "apps/android/app/src/main/res/values-/strings.xml"
params:
file_format: android
locale_id: LOCALE_ID
# iOS Strings
- файл: "apps/ios/.lproj/Localizable.strings"
params:
file_format: strings
locale_id: LOCALE_ID
pull:
targets:
- файл: "apps/web/src/assets/i18n/.json"
params:
file_format: nested_json
locale_id: LOCALE_ID
- файл: "apps/android/app/src/main/res/values-/strings.xml"
params:
file_format: android
locale_id: LOCALE_ID
- файл: "apps/ios/.lproj/Localizable.strings"
params:
file_format: strings
locale_id: LOCALE_ID