# gt: General Translation CLI tool: strings.xml de Android
URL: https://generaltranslation.com/es/docs/cli/reference/formats/android-strings-files.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Traduce archivos de recursos strings.xml de Android con el CLI. Referencia de la API para el formato de archivo strings.xml de Android.

El CLI traduce los recursos de cadenas de Android. Un proyecto de Android guarda las cadenas de su idioma predeterminado en `res/values/strings.xml` y cada traducción en un directorio hermano calificado por configuración regional, como `res/values-es/strings.xml`. Las traducciones conservan los nombres de los recursos, los marcadores de posición `<xliff:g>` y el marcado inline que la aplicación renderiza.

## Descripción general [#overview]

| Tema                                                    | Descripción                                                                                     |
| ------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
| [Configuración](#config)                                | Dirigir el archivo de recursos base a directorios calificados por configuración regional.       |
| [Calificadores de directorios de recursos](#qualifiers) | Cómo se escriben los códigos de configuración regional en los nombres de directorio `values-*`. |
| [Plurales](#plurals)                                    | Reconstruir `<plurals>` para las categorías CLDR de cada idioma de destino.                     |
| [Recursos sin traducir](#untranslated)                  | Recursos que el CLI no modifica.                                                                |

## Configuración [#config]

Añade una entrada `androidStrings` dentro de `files`. El archivo de recursos base de Android es `res/values/strings.xml`, cuya ruta no incluye ningún calificador de configuración regional, por lo que no hay dónde colocar un marcador de posición `[locale]`. Apunta `include` al archivo base y usa `transform` para dirigir la salida traducida hacia los directorios con calificador de configuración regional:

```json title="gt.config.json"
{
  "defaultLocale": "en",
  "locales": ["es", "fr", "pl"],
  "files": {
    "androidStrings": {
      "include": ["res/values/strings.xml"],
      "transform": {
        "match": "res/values/(.*)",
        "replace": "res/values-{locale}/$1"
      }
    }
  }
}
```

Con esta configuración, la CLI lee `res/values/strings.xml` y escribe `res/values-es/strings.xml`, `res/values-fr/strings.xml` y `res/values-pl/strings.xml`. Consulta la [referencia de configuración](/docs/cli/reference/config#files) para ver todas las claves de archivo.

Esta es la estructura que debes usar en un proyecto estándar de Android, y se diferencia de los demás formatos de archivo: un patrón como `res/values-[locale]/strings.xml` resuelve el marcador de posición con tu `defaultLocale` y busca `res/values-en/strings.xml`, que un proyecto estándar no tiene. Así no coincide con ningún archivo y la ejecución termina sin traducir nada.

Si tu proyecto sí guarda sus cadenas de origen en un directorio calificado como `res/values-en/`, usa la forma con marcador de posición y elimina `transform`:

```json title="gt.config.json"
{
  "files": {
    "androidStrings": {
      "include": ["res/values-[locale]/strings.xml"]
    }
  }
}
```

La clave `androidStrings` requiere `gt` 2.19.0 o posterior.

## Calificadores de directorios de recursos [#qualifiers]

Android extrae la configuración regional del nombre del directorio `values-*` y hace fallar la compilación si el nombre no se puede analizar, por lo que la configuración regional de la ruta no siempre se escribe igual que en [`locales`](/docs/cli/reference/config#locales). Para `androidStrings`, la CLI convierte la configuración regional en un calificador de recursos de Android, tanto en el marcador de posición `[locale]` como en el marcador de posición de transformación `{locale}`:

| Configuración regional configurada | Directorio de recursos |
| ---------------------------------- | ---------------------- |
| `es`                               | `res/values-es`        |
| `fr-CA`                            | `res/values-fr-rCA`    |
| `zh-Hans`                          | `res/values-b+zh+Hans` |
| `es-419`                           | `res/values-b+es+419`  |

Un subtag de región adopta la forma legacy `-r`, mientras que un subtag de script o una región numérica usan la forma `b+` de BCP 47. Esta conversión solo se aplica a `androidStrings`; el resto de formatos de archivo usan la configuración regional exactamente como se haya configurado.

## Plurals [#plurals]

Las cadenas de cantidad de Android son elementos `<plurals>` que contienen un `<item quantity="...">` por cada categoría de CLDR. Un archivo traducido incluye las categorías que el idioma de destino realmente utiliza, que rara vez coinciden con las del idioma de origen. El inglés elige entre `one` y `other`, mientras que el polaco usa tres formas para un conteo entero, el árabe seis y el chino una.

```xml title="res/values/strings.xml"
<plurals name="photo_count">
  <item quantity="one">%d photo</item>
  <item quantity="other">%d photos</item>
</plurals>
```

La CLI reconstruye cada `<plurals>` según las reglas CLDR del idioma de destino, añadiendo las categorías que ese idioma necesita y descartando las que nunca selecciona. Android resuelve una cantidad únicamente mediante CLDR, por lo que una categoría que el idioma de destino no utiliza resulta inalcanzable y se elimina, incluido un `zero` presente en el origen. No esperes que el elemento traducido tenga los mismos valores de `quantity` que el origen; en su lugar, compara la salida renderizada con conteos representativos.

## Recursos no traducidos [#untranslated]

La CLI traduce los valores `<string>` y cada elemento de un `<string-array>` cuando el recurso contiene texto traducible.

La CLI deja estos recursos en el archivo traducido sin enviarlos a traducir:

* Recursos marcados con `translatable="false"`, la forma estándar de excluir claves de API, nombres de marca y valores de depuración. El atributo se compara tal como lo interpreta AAPT, así que `False` y `FALSE` también se respetan.
* Valores sin comillas cuyo texto, una vez recortado, comienza con `@` o `?`, es decir, que hacen referencia a otro recurso en lugar de contener texto. Los valores entre comillas y los valores con `\@` escapado siguen siendo traducibles.
* Un recurso `<plurals>` o `<string-array>` completo cuando alguno de sus elementos es una referencia a un recurso. La CLI deja el recurso íntegro sin cambios en lugar de arriesgarse a producir una referencia inválida.
* Tipos de recurso que no contienen texto visible para el usuario, como `<bool>`, `<integer>` y `<color>`.

Un comentario situado encima de un recurso se envía al motor de traducción como contexto, así que úsalo para desambiguar una cadena corta o con múltiples significados.

## Sitemap

See the full [sitemap](https://generaltranslation.com/sitemap.md) for all pages.
