Push
$ phrase push
El comando push carga archivos encontrados en directorios locales del proyecto. Usa el archivo .phrase.yml para especificar los archivos que cargar y establecer parámetros adicionales. El marcador de posición <tag> también puede usarse para descargar claves en archivos separados a partir de sus etiquetas.
Pull
$ phrase pull
Similar al comando push, con la excepción de que no se puede utilizar globbing. Cuando uses marcadores de posición, usa <locale_name> siempre que sea posible. Para obtener un archivo con claves que tengan una etiqueta específica, usa el parámetro tags:
phrase:
pull:
targets:
- file: path/to/file/<locale_name>.yml
params:
tags:tag_name
Para usar el marcador de posición <tag>, las etiquetas deseadas deben enumerarse en la sección params.
Parámetros
Los comandos push y pull se pueden configurar dentro del archivo .phrase.yml.
Nota
Todas las opciones del punto final de la API uploads son compatibles con el comando push.
Todas las opciones del punto final de la API locales download son compatibles con el comando pull.
Ejemplo de push:
push:
sources:
- file: ./locales/en.json
params:
update_translations: true
Ejemplo de pull:
pull:
targets:
- file: "./locales/example.yml"
params:
include_unverified_translations: true
Dependiendo del formato del archivo, se pueden aplicar opciones de formato a la sección de parámetros. Las opciones de formato se pueden aplicar a las cargas, las descargas o ambas.
Ejemplos de formato:
params:
format_options:
convert_placeholder: true
Algunos formatos de archivo permiten un mayor control sobre la sintaxis del archivo:
phrase:
pull:
targets:
- file: file.xml
params:
format_options:
convert_placeholder: true
push:
sources:
- file: file.csv
params:
format_options:
column_separator: ";"
Los siguientes marcadores de posición y operadores de globbing se pueden colocar en las rutas de las entradas del archivo:
-
<locale_name>
El nombre único de localización.
-
<locale_code>
El identificador de localización compatible con RFC 5646. El código de localización no tiene que ser único, por lo que pueden existir varias localizaciones con nombres diferentes con el mismo código.
-
<tag>
Usa etiquetas para agrupar claves. Se pueden usar etiquetas para mantener la estructura original del archivo.
Globbing
* y ** son operadores de globbing. Un solo asterisco * omite cualquier carpeta en una ruta. El asterisco doble ** es el operador de globbing estándar y coincide con cualquier carácter para una coincidencia recursiva y no exhaustiva.
Ejemplos:
# un patrón de archivo ./abc/**/*.yml
# con algunos archivos en tu sistema ./abc/defg/en.yml ./abc/es.yml ./fr.yml
# selects ./abc/defg/en.yml ./abc/es.yml
Cuando utilices el comando pull para descargar archivos, proporciona un patrón de archivo explícito como ./abc/defg/<locale_name>.yml en lugar de ./**/*.yml.
Todas las descargas se procesan de forma asíncrona. Para esperar las descargas, aplica la marca --wait. Push esperará a que cada archivo se cargue y devolverá si falló o tuvo éxito.
Carga de un archivo a la localización especificada
Carga el archivo en.json en el directorio ./locales/ con el locale_id especificado (la localización ya debe existir).
Update_translations se ha marcado como false para que solo se importen nuevas claves y traducciones. Si se cambia a true, el cliente también importaría cambios locales de las traducciones existentes, sobrescribiendo cualquier contenido ya presente.
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 # la localización debe existir de forma remota
Nota
No es posible eliminar entradas de traducción importadas. Si es necesario, actualiza las traducciones a valores empty mediante el punto final API correspondiente.
Ruby on Rails: carga de un tipo de archivo especificado
Carga todos los archivos que terminen con .yml ubicados en ./config/locales/. Los archivos YAML de Ruby on Rails contienen información de localización, por lo que no es necesario especificar la localización explícitamente. Update_translations está configurado como true, por lo que todos los cambios en las traducciones se importarán sobrescribiendo cualquier dato existente.
phrase:
push:
sources:
- file: ./config/locales/*.yml
params:
update_translations: true
file_format: yml
Coincidencia de cadenas iOS
Para que coincidan todos los archivos de cadenas iOS con archivos llamados Localizable.strings en carpetas .lproj.
<localización_code> es todo lo que coincide después / y antes de .lproj para crear e identificar localizaciones.
Se omite el parámetro update_translations y tiene el mismo efecto que cambiarlo a false.
phrase:
push:
sources:
- file: "./<locale_code>.lproj/Localizable.strings"
params:
file_format: strings
Mantenimiento de varios proyectos de Strings para un proyecto de localización
Edita el archivo de configuración para limitar el alcance de los proyectos dividiendo las traducciones en categorías más pequeñas.
Modifica el archivo de configuración para que se adapte a los requisitos y luego compruébalo en el sistema de control fuente o de control de versiones.
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"
Cadenas de iOS
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 no utiliza los códigos de idioma ISO estándar como patrón de archivo. Especifica el patrón requerido en .phrase.yml.
En lugar de definir un objetivo de extracción separado para cada localización, utiliza la configuración global locale_mapping combinada con el marcador de posición <locale_name>. La CLI utilizará el nombre personalizado del mapeo para la localización correspondiente y volverá al código de localización predeterminado de Phrase para todos los demás idiomas.
Ejemplo:
phrase:
access_token: ACCESS_TOKEN
project_id: PROJECT_ID
file_format: "xml"
# Mapea las localizaciones de Phrase a nombres de directorios específicos de Android
locale_mapping:
en-US: values
de-DE: values-de-rDE
fr-FR: values-fr
push:
sources:
# El archivo fuente es el idioma predeterminado, mapeado a 'values'
- file: ./app/src/main/res/values/strings.xml
params:
locale_id: en-US # Debe coincidir con la localización fuente en Phrase
pull:
targets:
# Usa el marcador de posición <locale_name> que será reemplazado por el mapeo
- file: ./app/src/main/res/<locale_name>/strings.xml
Ejemplo de configuración de locales explícitos
Ejemplo con inglés como idioma predeterminado, una localización alemana y una localización regional alemana para el alemán austriaco:
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
# Identificador único de localización para inglés
locale_id: LOCALE_ID
- file: ./app/src/main/res/values-de/strings.xml
params:
file_format: xml
# Identificador único de localización para alemán
locale_id: LOCALE_ID
- file: ./app/src/main/res/values-de-rAU/strings.xml
params:
file_format: xml
# Identificador único de localización para austriaco
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
Ejemplo multiplataforma
Empuje y extraiga automáticamente traducciones para múltiples objetivos en una sola configuración.
phrase:
access_token: ACCESS_TOKEN
project_id: PROJECT_ID
file_format: nested_json
push:
sources:
# Web JSON
- file: "apps/web/src/assets/i18n/.json"
params:
file_format: nested_json
locale_id: LOCALE_ID
# Android XML
- file: "apps/android/app/src/main/res/values-/strings.xml"
params:
file_format: android
locale_id: LOCALE_ID
# Cadenas de iOS
- file: "apps/ios/.lproj/Localizable.strings"
params:
file_format: strings
locale_id: LOCALE_ID
pull:
targets:
- file: "apps/web/src/assets/i18n/.json"
params:
file_format: nested_json
locale_id: LOCALE_ID
- file: "apps/android/app/src/main/res/values-/strings.xml"
params:
file_format: android
locale_id: LOCALE_ID
- file: "apps/ios/.lproj/Localizable.strings"
params:
file_format: strings
locale_id: LOCALE_ID