La herramienta Translations Editor ofrece una vista unificada y editable de todos los recursos de cadenas predeterminados y traducidos.
Para obtener una introducción a la traducción de tu app en diferentes idiomas, lee Cómo brindar compatibilidad con diferentes idiomas y culturas.
Recursos de strings
Los recursos de strings de un proyecto se ubican en archivos strings.xml. Tu proyecto cuenta con un archivo strings.xml predeterminado que contiene recursos de cadenas en el idioma predeterminado de tu app, que es el que esperas que hable la mayoría de los usuarios. También puedes tener archivos strings.xml traducidos que contengan recursos de cadenas para otros idiomas que quieras que admita tu app.
Una vez que completes el archivo strings.xml predeterminado, podrás agregar las traducciones por tu cuenta o contratar un servicio profesional para que lo haga.
De cualquier manera, deberías aprovechar las funciones de Android Studio que te permiten administrar y probar texto localizable. Para obtener información sobre
servicios de traducción profesional, consulta Servicios de traducción.
Cómo abrir Translations Editor
Puedes acceder al Translations Editor desde los siguientes lugares en Android Studio.
Cómo acceder desde la vista Android
- En el panel Project > Android del lado izquierdo, selecciona ModuleName > res > values.
Haz clic con el botón derecho en el archivo strings.xml y selecciona Open Translations Editor.
En Translations Editor, se muestran los pares clave-valor del archivo
strings.xml.
En la Figura 1, se muestra el texto predeterminado de una app (en este caso, en inglés) en Translations Editor antes de la traducción. El contenido de los archivos strings.xml traducidos aparecerá a la derecha de la columna Untranslatable con una columna por idioma, como se muestra en la figura 2.
Cómo acceder desde strings.xml
Puedes acceder a Translations Editor desde cualquiera de tus archivos strings.xml.
- En el panel Project > Android del lado izquierdo, selecciona ModuleName > res > values.
- Haz doble clic en strings.xml para abrirlo y editarlo.
- En strings.xml, haz clic en el vínculo Open editor, en la esquina superior derecha.
Cómo configurar filas no traducibles
En Translations Editor, puedes seleccionar la opción Untranslatable para indicar que no quieres que se traduzca el texto de esta fila. Es posible que ese texto sea específico del producto, como nombres comerciales y marcas comerciales, o bien terminología técnica que no tiene traducción.
Cuando seleccionas Untranslatable, se agrega translatable="false" en la línea correspondiente del archivo strings.xml predeterminado. En el siguiente ejemplo,
EasyApp en la línea superior no se traduce porque es el nombre del producto.
<resources>
<string name="app_name" translatable="false">EasyApp</string>
<string name="action_settings">Settings</string>
<string name="easy_app">I am a Simple App!</string>
<string name="next_page">Next Page</string>
<string name="second_page_message">I am the Second Page!</string>
<string name="title_activity_second">SecondActivity</string>
</resources>
Cómo agregar y borrar idiomas
Translations Editor admite el código de idioma BCP 47 y combina los códigos de región (país) y la configuración regional en una única selección para las localizaciones de destino. Una configuración regional no solo define el idioma, sino también los formatos que deben usarse en cada país para información como la fecha y hora, la moneda y los decimales.
Para agregar un idioma, haz lo siguiente:
- En Translations Editor, haz clic en el ícono del globo terráqueo
. En la lista desplegable, selecciona el idioma que quieras agregar.
Se mostrará el nuevo idioma en Translations Editor, y se agregará al proyecto una carpeta values-* con un archivo
strings.xml. Por ejemplo, values-es para español.
Para borrar un idioma, haz lo siguiente:
Para borrar un idioma en Translations Editor, borra todos los valores de la columna (consulta Cómo editar, agregar y borrar texto), o bien borra la carpeta del proyecto de ese idioma de la siguiente manera:
- En el panel Project > Android del lado izquierdo, selecciona ModuleName > res.
- Haz clic con el botón derecho en la carpeta values-* del idioma que quieras borrar. Por ejemplo, values-hi para hindi.
- En la lista, selecciona Delete para borrar la carpeta y su archivo strings.xml.
Cómo editar, agregar y borrar texto
Puedes operar en las opciones de texto directamente en el archivo strings.xml o
mediante Translations Editor. En esta sección, se describe el enfoque de Translations Editor. En Translations Editor, puedes editar, agregar o borrar texto por medio de la vista de lista o del campo Translation en la parte inferior de Translations Editor.
Vista de lista
Para editar o agregar texto, haz lo siguiente:
- Haz doble clic en la celda en la que quieras editar o agregar texto.
- Puedes usar el teclado para copiar y pegar el texto, o bien, si tienes un teclado que admite signos diacríticos, escribir directamente en la vista de lista.
- Presiona Tab o coloca el cursor fuera del campo.
Para borrar texto, haz lo siguiente:
- Haz doble clic en la celda que quieras borrar.
- En la vista de lista, selecciona el texto y presiona Delete.
- Presiona Tab o coloca el cursor fuera del campo.
Campo Translation
Para editar o agregar texto, haz lo siguiente:
- En la vista de lista, haz clic en la celda en la que deseas editar o agregar texto.
- En el campo Translation, usa el teclado para copiar y pegar el texto o, si tienes un teclado que admite signos diacríticos, escribe directamente en el campo Translation.
- Presiona Tab o coloca el cursor fuera del campo.
Para borrar texto, haz lo siguiente:
- Haz clic en la celda que quieras borrar.
- En el campo Translation, selecciona el texto y presiona Delete.
Cómo agregar y borrar claves
En la columna Key de Translations Editor, se enumeran los identificadores únicos para cada elemento de datos en tus archivos strings.xml. Puedes agregar y borrar claves por medio de Translations Editor. Cuando borras una clave, Translations Editor también borra
todas sus traducciones asociadas. Para ello, usa la opción "Safe Delete refactoring", que te informa si el texto de la clave se usa en otra parte y te da la opción de realizar las modificaciones necesarias antes de borrarla. La refactorización de eliminación segura garantiza que tu código se compile después de que elimines la clave.
Para agregar una clave, haz lo siguiente:
- En Translations Editor, haz clic en Add Key
. En el diálogo, ingresa un nombre de clave, un valor predeterminado y la ubicación del archivo strings.xml predeterminado.
Figura 3: Agregar una clave
Para borrar una clave, haz lo siguiente:
- En Translations Editor, selecciona la clave que quieras borrar.
- Haz clic en Quitar claves
. En el diálogo Delete, elige si quieres borrarla de manera segura y si deseas buscarla en los comentarios y las strings. Luego, haz clic en OK.
Figura 4: Diálogo para borrar Si no hay referencias (usos) a la clave borrada o si todas las referencias pueden contraerse de forma segura, entonces se borrará la clave. De lo contrario, Translations Editor mostrará el diálogo Usages Detected con información sobre los problemas detectados.
Figura 5: Usages Detected Selecciona View Usages para revisar el contenido que se borrará. En el diálogo Find Safe Delete Conflicts, se muestran todos los usos que no deberían borrarse porque no es seguro, a fin de que puedas editar el código correspondiente.
Figura 6: Usos que no deberían borrarse porque no es seguro Haz clic con el botón derecho en un uso para ver el menú contextual y selecciona Jump to Source para realizar los cambios necesarios.
En el panel Find Safe Delete Conflicts, selecciona Rerun Safe Delete para asegurarte de que no haya otros usos que requieran atención.
Una vez que borres los usos, haz clic en Do Refactor para borrar la clave.
Cómo corregir errores
En la Figura 7, se muestra el contenido de los archivos strings.xml en inglés, francés y español de Translations Editor. Las líneas que contienen errores
se muestran en color rojo.
Si quieres corregir un error, coloca el cursor sobre el texto rojo para ver una explicación del problema y su solución.
Cuando realices modificaciones en Translations Editor, se actualizarán los archivos strings.xml subyacentes con estos cambios. Cuando lo hagas en un archivo strings.xml, se actualizará la columna correspondiente de Translations Editor con los cambios.
Ejemplo de correcciones en Translations Editor:
- En la Figura 7, la fila app_name se marcó como Untranslatable, pero se proporcionó una traducción al español. Para corregir el error, deberás borrar la traducción.
- En la Figura 7, falta la traducción al francés en la fila next_page. Usa tu teclado para copiar Page Suivante en la celda y corregir el error. La operación de copiar y pegar con el teclado copia el texto con los signos diacríticos en la celda.
Cómo administrar y probar el texto localizable
Android Studio y la plataforma de Android ofrecen varias funciones para ayudarte a administrar y probar el texto localizable de tu app. Estas funciones tienen opciones que te ayudan a resolver problemas con secuencias de comandos de derecha a izquierda (RTL), como en árabe o hebreo. Probar el texto localizable te permite realizar los ajustes necesarios en el texto de la IU y su diseño antes de que confirmes tus mensajes en el repositorio fuente que luego se enviarán para su traducción.
Compatibilidad con idiomas que se escriben de derecha a izquierda
Jetpack Compose controla los diseños de derecha a izquierda (RTL) de forma nativa. Los modificadores de diseño y las APIs se compilan en torno a conceptos direccionales, como start y end, en lugar de direcciones absolutas, como left y right. Cuando el idioma del sistema cambia a una configuración regional de derecha a izquierda, Compose duplica automáticamente estos diseños.
Para que tu app reconozca la configuración regional de derecha a izquierda y active esta duplicación, debes habilitar la opción con el archivo de manifiesto de tu app.
Para habilitar la compatibilidad con RTL, haz lo siguiente:
- Abre el archivo
AndroidManifest.xml. - Agrega el atributo
android:supportsRtl="true"al elemento<application>:
<manifest ... >
<application
...
android:supportsRtl="true">
</application>
</manifest>
Para obtener más información sobre cómo Compose controla el diseño de texto, la duplicación y las configuraciones de RTL personalizadas, consulta Cómo trabajar con idiomas de derecha a izquierda.
Establecer la dirección del texto de forma manual
En Jetpack Compose, no usas una ventana visual de propiedades para forzar el diseño o las direcciones del texto. Compose controla automáticamente la duplicación de derecha a izquierda según la configuración regional del sistema.
Sin embargo, si necesitas anular manualmente la dirección de un elemento de texto específico (por ejemplo, mostrar una cadena de LTR en un diseño de RTL), puedes pasar un objeto TextDirection a tu TextStyle.
Entre los valores admitidos, se incluyen los siguientes:
TextDirection.Content: (Default): Infiere la dirección a partir del primer carácter direccional fuerte.TextDirection.Ltr: Fuerza la dirección de izquierda a derecha.TextDirection.Rtl: Fuerza la dirección de derecha a izquierda.
Para obtener más información sobre cómo aplicar diseño al texto y configurar instrucciones de texto manuales en Compose, consulta Cómo aplicar diseño al texto.
Usa cadenas localizadas en tu app
Una vez que hayas agregado y traducido tus cadenas con Translations Editor,
tus archivos res/values/strings.xml subyacentes se actualizarán automáticamente y
podrás usar los recursos localizados directamente en tu IU.
Para aprender a mostrar texto localizado, controlar la dirección de derecha a izquierda de forma nativa y usar @Preview para probar diferentes configuraciones regionales y pseudoconfiguraciones regionales, consulta la sección Strings de Recursos en Compose.
Pseudoconfiguraciones regionales
Una pseudoconfiguración regional es una configuración regional ficticia diseñada para adoptar las características de los idiomas que generan problemas con la IU, el diseño, la dirección RTL y otros problemas que surgen cuando se traduce una app. Estas proporcionan traducciones instantáneas y automáticas para todos los mensajes localizables que pueden leerse en inglés. De esta manera, es posible captar mensajes que no se pueden traducir en el código fuente.
Si quieres obtener más información para usar pseudoconfiguraciones regionales, consulta Cómo probar tu app con pseudoconfiguraciones regionales.