Dokumentation / Android
Android-String-Ressourcen
Verschiebe fest codierten Text in Android-Layouts, Jetpack Compose und View-Code (Kotlin oder Java) in String-Ressourcen: strings.xml pro Sprache, stringResource()-Aufrufe und die Sprachliste pro App.
Funktionsweise
In Layouts und Menüs werden android:text, hint, contentDescription und title zu @string/…. In Compose werden Text("…") und contentDescription = "…" in @Composable-Funktionen zu stringResource(R.string.…, args); Toasts verwenden context.getString.
Auch View-Code in Kotlin oder Java funktioniert: label.setText("…"), setHint, setTitle und Dialog-Schaltflächen sowie Kotlins label.text = "…" werden zu setText(R.string.…). Ein aus Werten gebildeter View-Text wird gemeldet, da setText keine Formatargumente akzeptiert.
Platzhalter werden zu %1$s, %2$s… nummeriert nach ihrer Reihenfolge im Quelltext, sodass eine Übersetzung sie umordnen kann.
Eine Zahl mit ihrem Wort, "$n ${if (n == 1) "item" else "items"}", wird zu einem <plurals>-Ressourcen-Eintrag, der mit pluralStringResource(R.plurals.…, n, n) (oder getQuantityString in einer Benachrichtigung) gelesen wird.
Vorher und nachher
Die tatsächliche Ausgabe der Engine für diese Datei. Bei einer echten Ausführung benennt das gehostete Modell die Schlüssel anhand des Kontexts.
@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>Was das Setup hinzufügt
Der erste Durchlauf richtet Android-String-Ressourcen (Bibliothek) ein, falls das Projekt es noch nicht hat:
res/values/strings.xmlundres/values-<lang>/strings.xmlres/xml/locales_config.xmlundandroid:localeConfig, sodass Android 13+ die Sprachen in den App-Einstellungen auflistet
Ausführen
Die CLI benötigt Node.js 22 oder neuer, sonst nichts: npx führt es aus, ohne ein package.json zum Projekt. Kein Node auf Ihrem Rechner? Die GitHub Action unten führt es für Sie aus.
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,deOder fügen Sie die GitHub Action und erhalten Sie bei jedem Push einen Pull Request. Probieren Sie es zuerst mit Ihrem eigenen Code im Spielbereich.