localize.dev

Docs / Android

Ressources de chaînes Android

Déplacez le texte durcoded dans les layouts Android, Jetpack Compose et le code View (Kotlin ou Java) vers des ressources de chaînes : fichiers strings.xml par langue, appels à stringResource(), et la liste des langues par application.

Comment ça marche

Dans les layouts et menus, android:text, hint, contentDescription et title deviennent @string/…. En Compose, Text("…") et contentDescription = "…" à l'intérieur de fonctions @Composable deviennent stringResource(R.string.…, args); les toasts utilisent context.getString.

Le code de vue en Kotlin ou Java fonctionne aussi : label.setText("…"), setHint, setTitle et les boutons de dialogue, ainsi que Kotlin’s label.text = "…", deviennent setText(R.string.…). Un texte de vue construit à partir de valeurs est signalé, car setText n’accepte pas d’arguments de format.

Les placeholders deviennent %1$s, %2$s… numérotés selon leur ordre dans le texte source, afin que la traduction puisse les réorganiser.

Un nombre avec son mot, "$n ${if (n == 1) "item" else "items"}", devient une ressource <plurals> lue avec pluralStringResource(R.plurals.…, n, n) (ou getQuantityString dans une toast).

Avant et après

La sortie réelle du moteur pour ce fichier. Lors d'une exécution réelle, le modèle hébergé nomme les clés à partir du contexte.

app/src/main/java/com/acme/shop/ui/Cart.kt · avant
@Composable
fun Cart(name: String) {
    Column {
        Text("Welcome back, $name!")
        Text(text = "Checkout")
    }
}
app/src/main/java/com/acme/shop/ui/Cart.kt · après
import androidx.compose.ui.res.stringResource

@Composable
fun Cart(name: String) {
    Column {
        Text(stringResource(R.string.cart_welcome_back, name))
        Text(text = stringResource(R.string.cart_checkout))
    }
}
res/values/strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="cart_welcome_back">Welcome back, %1$s!</string>
    <string name="cart_checkout">Checkout</string>
</resources>

Ce que l'installation ajoute

La première exécution configure Ressources de chaînes Android (bibliothèque) si le projet ne l'a pas encore :

  • res/values/strings.xml et res/values-<lang>/strings.xml
  • res/xml/locales_config.xml et android:localeConfig, afin qu’Android 13+ liste les langues dans les paramètres de l’app

Exécutez-le

La CLI nécessite Node.js 22 ou une version ultérieure, rien d'autre : npx l'exécute sans ajouter de package.json au projet. Pas de Node sur votre machine ? L'action GitHub ci-dessous l'exécute pour vous.

npx localize-dev login

# Preview, then write the changes
npx localize-dev run --dry-run -l es,fr,de
npx localize-dev run -l es,fr,de

# Or open a pull request instead
npx localize-dev pr -l es,fr,de

Ou ajoutez le Action GitHub et recevez une pull request à chaque push. Essayez-le d'abord sur votre propre code dans le playground.