Cómo localizar su aplicación de Android con IA
Configure las carpetas values/, traduzca strings.xml con IA, cambie de idioma en Kotlin y, a continuación, suba capturas de pantalla para que PTC (Private Translation Cloud) revise la aplicación de Android en funcionamiento. Al final de esta guía, tendrá una aplicación de Android multilingüe lista para producción, con cada idioma de destino verificado mediante una revisión visual antes del lanzamiento.
Esta guía asume que ya tiene un proyecto de Android en Android Studio. Si está empezando de cero, cree primero un nuevo proyecto con la plantilla «Empty Activity».
Cómo resuelve Android los recursos localizados desde las carpetas values-{locale}/
Android organiza los recursos localizados en carpetas res/values-{locale}/ dentro de app/src/main/. La carpeta predeterminada es values/, que contiene las cadenas del idioma de origen. Cada idioma de destino recibe su propia carpeta values-{locale}/.
app/src/main/res/
values/strings.xml # source language (typically English) - REQUIRED
values-es/strings.xml # Spanish
values-fr/strings.xml # French
values-de/strings.xml # German
values-ja/strings.xml # Japanese
values-zh-rCN/strings.xml # Simplified Chinese (region-specific)
Incluya siempre la carpeta values/ predeterminada sin código de idioma. Esa es su opción de reserva (fallback). Android elige la carpeta correcta en tiempo de ejecución basándose en la configuración regional del dispositivo del usuario. Si el idioma del usuario es el español pero usted no tiene values-es/, Android recurre a values/. Esta resolución es silenciosa. Una aplicación traducida parcialmente mostrará inglés mezclado con español, sin errores.
Los códigos de configuración regional siguen el estándar BCP 47. es para español, pt-rBR para portugués de Brasil (observe el prefijo r para la región), zh-rCN para chino simplificado.
Mueva cada cadena orientada al usuario a strings.xml
Utilice siempre recursos de cadena almacenados en strings.xml. Nunca escriba texto directamente en el código Kotlin/Java ni en un atributo de diseño android:text=. El texto codificado directamente no se puede traducir.
Mueva cada cadena orientada al usuario a res/values/strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">My Notes</string>
<string name="welcome_message">Welcome, %1$s!</string>
<string name="notes_count_zero">No notes yet</string>
<plurals name="notes_count">
<item quantity="one">%d note</item>
<item quantity="other">%d notes</item>
</plurals>
<string-array name="categories">
<item>Personal</item>
<item>Work</item>
<item>Travel</item>
</string-array>
</resources>
Haga referencia a cada cadena en Kotlin mediante el ID R.string.* generado:
val appName = stringResource(R.string.app_name)
val welcome = stringResource(R.string.welcome_message, userName)
val counts = pluralStringResource(R.plurals.notes_count, notes.size, notes.size)
Convenciones clave que PTC respeta:
- Marcadores de posición posicionales. Utilice
%1$s,%2$d,%3$fen lugar de%s,%d. Algunos idiomas necesitan reordenar los argumentos. Los marcadores de posición posicionales lo hacen posible. PTC los reconoce y preserva automáticamente. <plurals>para sustantivos contables. No escribaif (count == 1) "1 note" else "$count notes"en el código. Utilice<plurals>con las cantidadesone/other/few/many. PTC genera las categorías de plural correctas para cada idioma de destino (1 forma para el japonés, 2 para el inglés, 4 para el polaco, 6 para el árabe).<string-array>para listas estáticas. PTC traduce cada elemento manteniendo la estructura del array.- Escape de apóstrofos (
\') y comillas (\") para evitar errores de análisis XML.
Traduzca strings.xml con PTC en 5 pasos
- Inicie un proyecto de PTC en su panel de control. Suba su archivo
values/strings.xml, configure sus rutas de salida y elija los idiomas de destino. PTC admite más de 40. Durante la prueba gratuita, puede seleccionar dos cualesquiera. PTC utiliza el idioma de origen para elegir el motor de traducción automática adecuado y para omitir las cadenas donde el origen es igual al destino. - Revise la descripción de la aplicación generada automáticamente. PTC crea una breve descripción de su aplicación de Android a partir del archivo subido. Edítela para describir mejor su aplicación y su audiencia. PTC utiliza este contexto para adaptar el tono y la formalidad adecuados para cada idioma.
- Opcionalmente, suba traducciones existentes. Si ya tiene archivos
values-*/strings.xmltraducidos, súbalos para que PTC pueda ajustarse a su estilo actual. De lo contrario, traduzca desde cero. - Traduzca y revise. PTC respeta cada clave
name=(sus claves nunca cambian), cada marcador de posición posicional y genera las categorías de plural correctas para cada destino. Si una traducción supera sus límites de longitud, PTC la resalta para que nada pase desapercibido. Edite cualquier cadena directamente o pida a PTC que vuelva a traducir teniendo en cuenta la restricción. - Descargue los archivos
strings.xmltraducidos por idioma en un archivo ZIP. Cada archivo es estructuralmente idéntico a su origen. Mismas claves, mismos arrays, mismas etiquetas de plural. Valores traducidos.
Coloque los archivos strings.xml traducidos en values-{locale}/
Coloque cada archivo traducido en la carpeta values-{locale}/ correspondiente:
app/src/main/res/values-es/strings.xml # from PTC
app/src/main/res/values-fr/strings.xml # from PTC
app/src/main/res/values-de/strings.xml # from PTC
Vuelva a compilar el proyecto. Android detecta los nuevos recursos automáticamente. Para verificarlo, cambie el idioma de su emulador o dispositivo y reinicie la aplicación. La interfaz de usuario debería aparecer en el nuevo idioma.
Añada un selector de idioma en la aplicación con AppCompatDelegate.setApplicationLocales()
Muchas aplicaciones necesitan un selector de idioma interno para que los usuarios puedan anular la configuración regional del dispositivo. A partir de Android 13 (API 33), el enfoque canónico utiliza AppCompatDelegate.setApplicationLocales():
import androidx.appcompat.app.AppCompatDelegate
import androidx.core.os.LocaleListCompat
fun setAppLanguage(languageTag: String) {
val locales = LocaleListCompat.forLanguageTags(languageTag)
AppCompatDelegate.setApplicationLocales(locales)
}
// Usage in a settings screen
binding.spanishButton.setOnClickListener {
setAppLanguage("es")
}
binding.frenchButton.setOnClickListener {
setAppLanguage("fr")
}
Para declarar qué idiomas admite su aplicación (de modo que el selector de configuración regional del sistema los muestre), añada un archivo locales_config.xml:
<!-- res/xml/locales_config.xml -->
<?xml version="1.0" encoding="utf-8"?>
<locale-config xmlns:android="http://schemas.android.com/apk/res/android">
<locale android:name="en"/>
<locale android:name="es"/>
<locale android:name="fr"/>
<locale android:name="de"/>
<locale android:name="ja"/>
</locale-config>
Y haga referencia a él en AndroidManifest.xml:
<application
android:localeConfig="@xml/locales_config"
... >
Para aplicaciones destinadas a Android 12 o versiones anteriores, el enfoque antiguo consiste en guardar la elección del usuario en SharedPreferences y aplicarla en cada inicio de la aplicación:
fun setLocale(context: Context, languageCode: String) {
// Save the user's choice
val prefs = context.getSharedPreferences("Settings", Context.MODE_PRIVATE)
prefs.edit().putString("app_language", languageCode).apply()
// Apply the new locale
val locale = Locale(languageCode)
Locale.setDefault(locale)
val config = Configuration()
config.setLocale(locale)
context.resources.updateConfiguration(config, context.resources.displayMetrics)
// Restart the activity so changes take effect
if (context is Activity) {
context.recreate()
}
}
A continuación, cargue el idioma guardado en cada inicio de la aplicación:
override fun onCreate() {
super.onCreate()
val prefs = getSharedPreferences("Settings", Context.MODE_PRIVATE)
val languageCode = prefs.getString("app_language", "en") ?: "en"
val locale = Locale(languageCode)
Locale.setDefault(locale)
val config = Configuration()
config.setLocale(locale)
resources.updateConfiguration(config, resources.displayMetrics)
}
Esto persiste entre sesiones y funciona correctamente después de publicar en Google Play.
Use start/end (no left/right) para idiomas de derecha a izquierda
Para el árabe, hebreo, persa y urdu, utilice start y end en lugar de left y right en sus diseños para que Android refleje el diseño automáticamente:
<!-- Instead of this -->
<TextView android:layout_marginLeft="16dp" />
<!-- Use this -->
<TextView android:layout_marginStart="16dp" />
En Jetpack Compose, utilice Arrangement.Start en lugar de Arrangement.Absolute.Left. Active «Forzar dirección de diseño RTL» en las Opciones de desarrollador para probar el reflejo sin cambiar el idioma del dispositivo.
Automatice la traducción de Android en cada lanzamiento con Git o la API de PTC
Para proyectos activos, volver a ejecutar manualmente la traducción en cada lanzamiento no es escalable. PTC le ofrece dos formas de automatizarlo.
Integración con Git (recomendado). Vaya a Settings > Merge Requests en el panel de control de PTC y haga clic en Add Git Integration para conectar su repositorio de GitHub, GitLab o Bitbucket. Proporcione un token de acceso con permisos de lectura y escritura y elija las ramas que PTC debe supervisar. A partir de ahí, PTC detecta los cambios, traduce las cadenas nuevas o actualizadas y abre una merge request para su revisión.
Integración mediante API. Vaya a Settings > Manage API Tokens y cree un token de acceso. A continuación, utilice la API de PTC dentro de su CI actual:
# .github/workflows/translate.yml
name: PTC translate
on:
push:
branches: [main]
paths:
- 'app/src/main/res/values/strings.xml'
jobs:
translate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Trigger PTC translation
run: |
curl -X POST https://api.ptc.wpml.org/v1/projects/${{ secrets.PTC_PROJECT_ID }}/sync \
-H "Authorization: Bearer ${{ secrets.PTC_API_KEY }}"
Tanto la integración con Git como con la API son funciones Pro que están disponibles al activar el pago al consumo. Consulte la referencia de la API de PTC para conocer los endpoints, webhooks y el modelo de integración completo.
Revisión visual de la traducción de su aplicación de Android: publique sin control de calidad manual por idioma
Una vez que PTC traduce su archivo strings.xml, el trabajo no ha terminado. Una etiqueta traducida puede desbordar un botón en alemán. «Submit» puede traducirse como un sustantivo en francés cuando la interfaz necesitaba un verbo. Una cadena en inglés codificada directamente que alguien olvidó envolver en getString(R.string.welcome) aparecerá claramente sin traducir en la aplicación de Android en ejecución. Detectar esto tradicionalmente implica una fase de control de calidad manual en cada idioma de destino. Esa es la etapa más lenta y costosa de la localización móvil.
El AI Visual QA de PTC sustituye esa fase. Para aplicaciones nativas de Android (que no se ejecutan en un navegador, por lo que el flujo de la extensión no se aplica), utilice la subida de capturas de pantalla. Capture las pantallas críticas de la aplicación en ejecución en cada idioma de destino (ajustes, flujo principal, casos extremos) y súbalas a PTC. La IA de visión de PTC inspecciona cada pantalla e informa de:
- Problemas que PTC puede solucionar en
strings.xml. PTC vuelve a traducir la acepción del verbo, elige un sinónimo más corto que se ajuste al ancho del botón o regenera un plural adaptado al diseño. PTC abre una PR con las correcciones. No requiere trabajo por su parte. - Problemas que residen en su código Kotlin. Falta el envoltorio
getString(), cadenas codificadas directamente o concatenación de frases que debería usarString.format()con marcadores de posición. PTC genera un prompt listo para pegar en Cursor o Claude Code. Su equipo de desarrollo envuelve las cadenas en segundos.
El resultado: usted lanza una aplicación de Android multilingüe y verificada en cada versión. No obtiene simplemente un strings.xml traducido con una larga cola de control de calidad manual.
Traduzca su ficha de Play Store, notas de lanzamiento y notificaciones push
La descripción de su ficha de Play Store, las notas de lanzamiento de «novedades» y el texto de las notificaciones push viven fuera de strings.xml. La función Pegar para traducir de PTC gestiona esos textos en el mismo proyecto. Pegue el texto de origen en el panel de control de PTC, elija los idiomas de destino y obtenga traducciones que utilicen el mismo glosario y voz de marca que las cadenas internas de su aplicación. Después, en Google Play Console, vaya a Presencia en Google Play Store > Ficha de Play Store principal > Traducciones, añada las descripciones breves y largas traducidas y guarde los cambios.
Traduzca contenido de usuario en la aplicación con la API de PTC
El chat interno, las publicaciones en redes sociales y las reseñas generadas por los usuarios necesitan traducción a medida que llega el contenido. La API REST de PTC traduce este contenido bajo demanda con autenticación mediante token Bearer, utilizando el mismo glosario y voz de marca que sus traducciones de strings.xml.
Pruebe su aplicación de Android localizada en cada lanzamiento
Cambie el idioma de su dispositivo en Ajustes o utilice el selector de idioma del emulador de Android Studio. Para cada idioma, compruebe si hay texto demasiado largo para los elementos de la interfaz, traducciones faltantes (recurso silencioso al idioma predeterminado), formato incorrecto de fechas/números/monedas y problemas de diseño con textos más largos. Para los idiomas RTL, active «Forzar dirección de diseño RTL» en las Opciones de desarrollador.
Precios de traducción de Android tras la prueba gratuita
Pago al consumo, sin suscripción. Solo paga por lo que traduce. Las primeras 500 palabras de cada mes son gratuitas, y la tarifa disminuye a medida que traduce más. Utilice la calculadora de precios para obtener una estimación.
Traduzca ahora su aplicación de Android real
Comience su prueba de 30 días: 20.000 palabras en 2 idiomas, sin tarjeta de crédito. Suba su archivo strings.xml, tradúzcalo en minutos y, a continuación, suba capturas de pantalla para que PTC verifique la aplicación en funcionamiento.
Relacionado:
- Traducir aplicaciones iOS y Android con IA: descripción general del servicio para equipos multiplataforma.
- Cómo localizar su aplicación de iOS: la guía equivalente para Xcode y SwiftUI.
- Referencia de la API de PTC: endpoints REST para la integración con CI.