Conceptos y la implementación de Jetpack Compose
Android se ejecuta en muchos dispositivos, en muchas regiones. Para llegar a la mayoría de los usuarios, asegúrate de que tu app maneje textos, archivos de audio, números, monedas y gráficos de manera apropiada a la configuración regional donde se usa.
En esta página, se describen algunas prácticas recomendadas para localizar apps para Android.
Debes tener conocimientos básicos sobre Kotlin o el lenguaje de programación Java y estar familiarizado con la carga de recursos de Android, la declaración de los elementos de la interfaz de usuario en XML, las consideraciones de desarrollo como el ciclo de vida de la actividad, y los principios generales de internacionalización y localización.
Una buena práctica es usar el framework de recursos de Android para separar los aspectos localizados de tu app lo máximo posible de las funcionalidades principales de la app.
- Coloca la mayor parte o la totalidad del contenido de la interfaz de usuario de la app en los archivos de recursos, como se describe en esta página y en la descripción general de recursos de la app.
- Por otro lado, el comportamiento de la interfaz de usuario está impulsado por el código basado en Kotlin o en Java. Por ejemplo, si los usuarios ingresaran datos que se deben formatear u ordenar de manera diferente según la configuración regional, tendrás que usar Kotlin o el lenguaje de programación Java para manejar los datos de manera programática. En esta página, no se aborda cómo localizar el código basado en Kotlin o en Java.
Si deseas obtener una guía breve para localizar cadenas en la app, consulta Cómo brindar compatibilidad con diferentes idiomas y culturas.
Cómo usar recursos para la localización
En esta sección, se explica cómo crear recursos predeterminados y alternativos. También se explica cómo se asigna la prioridad a los recursos y cómo se hace referencia a ellos en el código.
Crea recursos predeterminados
Coloca el texto predeterminado de la app en res/values/strings.xml. Para estas cadenas, usa el idioma predeterminado, es decir, el idioma que esperas que hablen la mayoría de los usuarios de tu app.
El conjunto de recursos predeterminados también incluye cualquier diseño y elementos de diseño predeterminados, y puede incluir otros tipos de recursos, como animaciones. Estos recursos se encuentran en los siguientes directorios:
res/drawable/(directorio obligatorio que contiene al menos un archivo gráfico para el ícono de la app en Google Play)res/layout/(directorio obligatorio que contiene un archivo en formato XML que define el diseño predeterminado)res/anim/(obligatorio si tienes carpetasres/anim-<qualifiers>)res/xml/(obligatorio si tienes carpetasres/xml-<qualifiers>)res/raw/(obligatorio si tienes carpetasres/raw-<qualifiers>)
Sugerencia: En el código, examina cada referencia a un recurso de Android. Asegúrate de que se defina un recurso predeterminado para cada uno. También asegúrate de que el archivo de cadena predeterminado esté completo: un archivo de cadena localizado puede contener un subconjunto de cadenas, pero el archivo de cadena predeterminado tiene que contenerlos todos.
Sugerencias de localización
Sigue estas sugerencias mientras localizas tu app.
Elabora un diseño flexible
Si necesitas reorganizar el diseño para que se ajuste a un idioma determinado, puedes crear un diseño alternativo para ese idioma, como res/layout-de/main.xml para un diseño en alemán. Sin embargo, esto puede dificultar el mantenimiento de tu app. Es mejor crear un diseño único que sea más flexible.
Otro caso típico es un idioma que requiere algo diferente en el diseño. Por ejemplo, podrías tener un formulario de contacto que incluya dos campos de nombre cuando la app se ejecute en japonés, pero tres campos de nombre cuando se ejecute en algún otro idioma. Puedes manejar esto de dos maneras:
- Crea un diseño con un campo que puedas habilitar o inhabilitar de manera programática, según el idioma.
- Haz que el diseño principal incluya otro diseño que, a su vez, incluya el campo modificable. El segundo diseño puede tener diferentes configuraciones para diferentes idiomas.
Usa el objeto de contexto de Android para la búsqueda manual de configuración regional
Puedes buscar la configuración regional con el Context objeto
que Android pone a disposición, como se muestra en el siguiente ejemplo:
Kotlin
val primaryLocale: Locale = context.resources.configuration.locales[0] val locale: String = primaryLocale.displayName
Java
Locale primaryLocale = context.getResources().getConfiguration().getLocales().get(0); String locale = primaryLocale.getDisplayName();