CLI

Modificación del archivo de configuración CLI (Strings)

El contenido se traduce automáticamente del inglés por Phrase Language AI.

El archivo .phrase.yml se utiliza para almacenar argumentos de la línea de comandos reutilizados.

Argumentos admitidos:

  • project_id

    El ID de un proyecto.

  • file_format

    Formato de archivo utilizado cuando no se especifica explícitamente uno en las entradas de fuente y meta.

  • per_page

    Número de artículos devueltos en respuestas paginadas.

Archivo de configuración de muestra.

Push y pull

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. Las opciones de push son las mismas que para el punto final API uploads y las opciones de pull son las mismas que para el punto final API locales download.

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

Opciones de formato

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: ";"

Marcadores de posición y globbing

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.

Espera de descargas

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.

Casos prácticos

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.

Ejemplos de configuración para marcos

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. Especifica el patrón requerido en .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"

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
¿Fue útil este artículo?

Sorry about that! In what way was it not helpful?

The article didn’t address my problem.
I couldn’t understand the article.
The feature doesn’t do what I need.
Other reason.

Note that feedback is provided anonymously so we aren't able to reply to questions.
If you'd like to ask a question, submit a request to our Support team.
Thank you for your feedback.