# gt: General Translation CLI tool: strings.xml Android
URL: https://generaltranslation.com/fr/docs/cli/reference/formats/android-strings-files.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Traduisez les fichiers de ressources strings.xml Android avec la CLI. Référence API pour le format de fichier strings.xml Android.

La CLI traduit les ressources de chaînes Android. Un projet Android conserve les chaînes de sa langue par défaut dans `res/values/strings.xml` et chaque traduction dans un répertoire frère qualifié par paramètre régional, par exemple `res/values-es/strings.xml`. Les traductions conservent les noms de ressources, les espaces réservés `<xliff:g>` ainsi que le balisage inline affiché par l&#39;application.

## Vue d&#39;ensemble [#overview]

| Sujet                                                     | Description                                                                                     |
| --------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
| [Configuration](#config)                                  | Diriger le fichier de ressources de base vers des répertoires qualifiés par paramètre régional. |
| [Qualificateurs de répertoire de ressources](#qualifiers) | Comment les codes de langue s&#39;écrivent dans les noms de répertoire `values-*`.              |
| [Plural](#plurals)                                        | Reconstruire `<plurals>` pour les catégories CLDR de chaque langue cible.                       |
| [Ressources non traduites](#untranslated)                 | Les ressources que la CLI laisse intactes.                                                      |

## Configuration [#config]

Ajoutez une entrée `androidStrings` sous `files`. Le fichier de ressources de base d&#39;Android est `res/values/strings.xml` : son chemin ne comporte aucun qualificateur de paramètre régional, il n&#39;y a donc nulle part où placer un espace réservé `[locale]`. Faites pointer `include` vers le fichier de base et utilisez `transform` pour diriger la sortie traduite vers les répertoires qualifiés par paramètre régional :

```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"
      }
    }
  }
}
```

Avec cette configuration, la CLI lit `res/values/strings.xml` et écrit `res/values-es/strings.xml`, `res/values-fr/strings.xml` et `res/values-pl/strings.xml`. Consultez la [référence de configuration](/docs/cli/reference/config#files) pour connaître toutes les clés de fichiers.

C&#39;est la structure à utiliser pour un projet Android standard, et elle diffère des autres formats de fichiers : une approche telle que `res/values-[locale]/strings.xml` résout l&#39;espace réservé en votre `defaultLocale` et recherche `res/values-en/strings.xml`, fichier qu&#39;un projet standard ne possède pas. Aucun fichier ne correspond, et l&#39;exécution se termine sans rien traduire.

Si votre projet conserve bel et bien ses chaînes sources dans un répertoire qualifié tel que `res/values-en/`, utilisez plutôt la forme avec espace réservé et supprimez le `transform` :

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

La clé `androidStrings` nécessite `gt` 2.19.0 ou une version ultérieure.

## Qualificateurs de répertoire de ressources [#qualifiers]

Android extrait le paramètre régional du nom d&#39;un répertoire `values-*` et fait échouer le build lorsqu&#39;il ne parvient pas à analyser ce nom ; le paramètre régional présent dans le chemin ne s&#39;écrit donc pas toujours comme vous l&#39;écrivez dans [`locales`](/docs/cli/reference/config#locales). Pour `androidStrings`, la CLI convertit le paramètre régional en qualificateur de ressource Android, à la fois dans l&#39;espace réservé `[locale]` et dans l&#39;espace réservé de transformation `{locale}` :

| Paramètre régional configuré | Répertoire de ressources |
| ---------------------------- | ------------------------ |
| `es`                         | `res/values-es`          |
| `fr-CA`                      | `res/values-fr-rCA`      |
| `zh-Hans`                    | `res/values-b+zh+Hans`   |
| `es-419`                     | `res/values-b+es+419`    |

Une sous-balise de région prend la forme legacy `-r`, tandis qu&#39;une sous-balise de script ou une région numérique utilise la forme BCP 47 `b+`. Cette conversion ne s&#39;applique qu&#39;à `androidStrings` ; tous les autres formats de fichiers utilisent le paramètre régional exactement tel qu&#39;il est configuré.

## Pluriel [#plurals]

Les chaînes de quantité Android sont des éléments `<plurals>` contenant un `<item quantity="...">` par catégorie CLDR. Un fichier traduit comporte les catégories réellement utilisées par la langue cible, qui correspondent rarement à l&#39;ensemble des catégories de la source. L&#39;anglais choisit entre `one` et `other`, tandis que le polonais utilise trois formes pour un nombre entier, l&#39;arabe six et le chinois une seule.

```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 reconstruit chaque `<plurals>` selon les règles CLDR de la langue cible, en ajoutant les catégories dont cette langue a besoin et en supprimant celles qu&#39;elle ne sélectionne jamais. Android résout une quantité uniquement via CLDR : une catégorie que la langue cible n&#39;utilise pas est donc inatteignable et se trouve supprimée, y compris un `zero` présent dans la source. Ne vous attendez pas à ce que l&#39;élément traduit comporte les mêmes valeurs de `quantity` que la source ; comparez plutôt le résultat affiché pour des valeurs de count représentatives.

## Ressources non traduites [#untranslated]

La CLI traduit les valeurs `<string>` ainsi que chaque élément d&#39;un `<string-array>` lorsque la ressource contient du texte traduisible.

La CLI laisse ces ressources dans le fichier traduit sans les envoyer à la traduction :

* Les ressources marquées `translatable="false"`, la manière standard d&#39;exclure les clés d&#39;API, les noms de marque et les valeurs de débogage. L&#39;attribut est reconnu tel qu&#39;AAPT le lit, donc `False` et `FALSE` sont également pris en compte.
* Les valeurs sans guillemets dont le texte, une fois les espaces supprimés, commence par `@` ou `?`, ce qui signifie qu&#39;elles font référence à une autre ressource au lieu de contenir du texte. Les valeurs entre guillemets et les valeurs échappées `\@` restent traduisibles.
* Une ressource `<plurals>` ou `<string-array>` entière dès que l&#39;un de ses éléments est une référence de ressource. La CLI laisse la ressource complète inchangée plutôt que de risquer de produire une référence cassée.
* Les types de ressources qui ne contiennent aucun texte visible par l&#39;utilisateur, comme `<bool>`, `<integer>` et `<color>`.

Un commentaire placé au-dessus d&#39;une ressource est transmis au moteur de traduction en tant que contexte : utilisez-en un pour lever l&#39;ambiguïté d&#39;une chaîne courte ou polysémique.

## Sitemap

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