Documentación / Android
Recursos de cadena de Android
Mueve texto codificado a mano en diseños de Android, Jetpack Compose y código de vistas (Kotlin o Java) a recursos de cadena: archivos strings.xml por idioma, llamadas a stringResource(), y la lista de idiomas por aplicación.
Cómo funciona
En diseños y menús, android:text, hint, contentDescription y title se convierten en @string/…. En Compose, Text("…") y contentDescription = "…" dentro de funciones @Composable se convierten en stringResource(R.string.…, args); las notificaciones usan context.getString.
El código de vistas en Kotlin o Java también funciona: label.setText("…"), setHint, setTitle y botones de diálogo, y Kotlin’s label.text = "…", se convierten en setText(R.string.…). Un texto de vista construido a partir de valores se reporta, ya que setText no acepta argumentos de formato.
Los placeholders se convierten en %1$s, %2$s… numerados según su orden en el texto original, para que la traducción pueda reordenarlos.
Un número con su palabra, "$n ${if (n == 1) "item" else "items"}", se convierte en un recurso <plurals> leído con pluralStringResource(R.plurals.…, n, n) (o getQuantityString en un toast).
Antes y después
La salida real del motor para este archivo. En una ejecución real, el modelo alojado nombra las claves a partir del contexto.
@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>Lo que añade la configuración
La primera ejecución configura Recursos de cadena de Android (biblioteca) si el proyecto aún no lo tiene:
res/values/strings.xmlyres/values-<lang>/strings.xmlres/xml/locales_config.xmlyandroid:localeConfig, para que Android 13+ liste los idiomas en la configuración de la app
Ejecutarlo
La CLI necesita Node.js 22 o posterior, nada más: npx lo ejecuta sin añadir un package.json al proyecto. ¿No tienes Node en tu máquina? La GitHub Action de abajo la ejecuta por ti.
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,deO añade la GitHub Action y obtén una pull request en cada push. Pruébalo primero en tu propio código en el playground.