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.
@Composable
fun Cart(name: String) {
Column {
Text("Welcome back, $name!")
Text(text = "Checkout")
}
}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))
}
}<?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.xmletres/values-<lang>/strings.xmlres/xml/locales_config.xmletandroid: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,deOu ajoutez le Action GitHub et recevez une pull request à chaque push. Essayez-le d'abord sur votre propre code dans le playground.