Android (Kotlin)
El plugin de Gradle translate-projects-android añade la tarea ./gradlew translateProjects: lee res/values/strings.xml, traduce los textos a cada idioma que configures y escribe values-<idioma>/strings.xml.
El plugin todavía no está publicado. La versión y la instalación final se completarán cuando salga en el Gradle Plugin Portal.
Requisitos
- Un proyecto Android con Gradle y el DSL de Kotlin (
build.gradle.kts). - JDK 17 o superior para ejecutar Gradle.
- Un proyecto y un API token de Translate Projects. Mira Primeros pasos.
1. Instala el plugin
Añade el plugin en el build.gradle.kts del módulo de la app:
plugins {
id("com.android.application")
id("dev.translateprojects.android") version "VERSION"
}
El plugin se descarga del Gradle Plugin Portal, que ya está en los repositorios por defecto (gradlePluginPortal() en settings.gradle.kts).
2. Configura el plugin
translateProjects {
sourceLang = "es"
targetLangs = listOf("en", "pt-BR", "fr")
apiKey = providers.environmentVariable("TRANSLATE_PROJECTS_API_KEY")
}
| Opción | Obligatorio | Descripción |
|---|---|---|
sourceLang | Sí | Idioma de res/values/strings.xml. Debe ser el idioma por defecto del proyecto. |
targetLangs | Sí | Idiomas destino, con los códigos de la API (en, pt-BR, zh-Hans). |
apiKey | Sí | API token del proyecto. Léelo de una variable de entorno, nunca lo escribas en el archivo. |
3. Escribe tus textos
Escribe los textos en el idioma base en res/values/strings.xml, como en cualquier app Android:
<resources>
<string name="app_name" translatable="false">Ruteo</string>
<string name="welcome">Hola, %1$s</string>
<string name="login_button">Iniciar sesión</string>
<plurals name="routes_count">
<item quantity="one">%d ruta</item>
<item quantity="other">%d rutas</item>
</plurals>
<string-array name="days">
<item>Lunes</item>
<item>Martes</item>
</string-array>
</resources>
4. Traduce
export TRANSLATE_PROJECTS_API_KEY=tu_token
./gradlew translateProjects
Archivos que genera
app/src/main/res/
├── values/strings.xml ← idioma base, no se modifica
├── values-en/strings.xml
├── values-pt-rBR/strings.xml ← pt-BR usa el formato de Android
└── values-fr/strings.xml
El name de cada texto es su clave en Translate Projects, así que puedes revisar y editar las traducciones en el panel.
Qué respeta
- Los placeholders (
%1$s,%d,%2$.2f) se mantienen intactos. pluralsystring-arrayse traducen elemento por elemento y conservan su estructura.- Los textos con
translatable="false"no se envían ni se copian a los otros idiomas. - Los apóstrofes y comillas se escapan como pide Android (
\',\"), y se conservan el CDATA y el HTML básico (<b>,<i>,<u>).
Caché
Una segunda ejecución sin textos nuevos hace dos peticiones y no traduce nada. Si alguien corrige una traducción en el panel de Translate Projects, la siguiente ejecución la baja sin --force; tus ediciones manuales en el archivo siguen teniendo prioridad. Más detalles en Caché y errores.
Errores comunes
- Falta el token: exporta
TRANSLATE_PROJECTS_API_KEYen la misma terminal (o como secreto en CI) antes de ejecutar Gradle. - Token inválido (
Token no válido): copia de nuevo el token del proyecto. Losstrings.xmlexistentes no se tocan. El idioma de origen no es el predeterminado:sourceLangdebe ser el idioma por defecto del proyecto.- Falta la key de IA (
MISSING_API_KEY): configura el proveedor, el modelo y la key en el proyecto; los textos que faltan se reintentan en la siguiente ejecución. - Traducción parcial, errores 5xx o de red: los idiomas incompletos se vuelven a pedir en la siguiente ejecución.
🚀 Automatiza tus traducciones gratis
Translate Projects es gratuito. Creas tu proyecto, conectas la key de tu proveedor de IA y solo le pagas a él lo que gastes.
- Sin planes ni tarjeta de crédito: Todas las funciones están disponibles desde el primer día.
- Usa tu propia IA: Claude, OpenAI, DeepSeek o Gemini. Tu key se guarda cifrada.
- Red de traducciones compartida: Si un texto ya fue traducido, lo recibes al instante sin gastar tu key.
- Panel de administración: Revisa y edita todas tus traducciones desde un solo lugar.
Estamos aquí para ayudarte
Si tienes alguna pregunta, necesitas ayuda o quieres contribuir, no dudes en contactarme. Estoy a tu disposición para apoyarte en lo que necesites.
- Sitio web: neiderruiz.com
- GitHub: @neiderruiz
- Twitter: @neiderruiz
- YouTube: Neider Ruiz
Apoya el Proyecto
Si este proyecto te ha sido útil, te invito a invitarme un café. Tu apoyo me ayuda a seguir mejorando y creando contenido de valor. ¡Gracias por estar aquí! ☕