Consejo
Para obtener información más detallada, consulta el Developer Hub.
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.
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 descargar 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:
# 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
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 descargar, aplica la marca --wait. Push esperará a que cada archivo se cargue y devuelva 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 # the locale must exist remotely
Nota
No es posible eliminar entradas de traducción importadas. Si es necesario, actualice las traducciones a valores empty mediante el punto final API correspondiente.
Ruby on Rails: carga de un tipo de archivo especificado
Cargue todos los archivos que terminen con .yml ubicados en ./config/locales/. Los archivos Ruby on Rails YAML 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 date_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 usa los códigos de idioma ISO estándar como patrón de archivo. Indica el patrón requerido en .phrase.yml.
En lugar de definir una meta pull separada para cada localización, usar el ajuste global locale_mapping combinado con el marcador de posición <locale_name>. La CLI usará el nombre Personalizar de la asignación para la localización correspondiente y recurrirá al código de localización de Phrase predeterminado para todos los demás idiomas.
Ejemplo:
phrase:
access_token: ACCESS_TOKEN
project_id: PROJECT_ID
file_format: "xml"
# Asignar localizaciones de Phrase a nombres de directorio 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, asignado a 'values'
- file: ./app/src/main/res/values/strings.xml
params:
locale_id: en-US # Debe concordar con la localización fuente en Phrase
pull:
targets:
# Usar el marcador de posición <locale_name> que será reemplazado por la asignación
- file: ./app/src/main/res/<locale_name>/Strings.xml
Ejemplo de localización explícita
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
# 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
Ejemplo multiplataforma
Enviar y descargar automáticamente traducciones para múltiples metas en una 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