Qt proporciona herramientas y una metodología para internacionalizar las aplicaciones. Consulte todos los detalles en Internacionalización y localización con Qt Quick.
Los pasos generales son los siguientes:
- Asegúrese de que la internacionalización se tiene en cuenta en los archivos QML. Esto incluye el uso de cadenas de caracteres de texto, la desambiguación de texto idéntico y el uso de parámetros y configuraciones regionales.
- Use la herramienta de línea de comandos lupdate.exe para generar el archivo de traducción básico, copie el archivo y asígnele un nombre para cada idioma requerido.
- Use Qt Linguist para abrir estos archivos y proporcionar las traducciones.
- En Qt Linguist, elija Archivo > Versión o use la herramienta de línea de comandos lrelease.exe para generar los archivos de traducción.
- Incluya estos archivos de traducción en el proyecto que se convertirá en una aplicación independiente.
Internacionalice su QML
The Qt Company recomienda completar los siguientes pasos para internacionalizar su QML:
- Use qsTr() para todas las cadenas de caracteres literales de la interfaz de usuario.
- Agregue el contexto. Utilice líneas de comentario para describir dónde se utiliza una cadena de caracteres, con sintaxis específica. //: es un comentario para el traductor, mientras que //~ es información extra opcional.
- Desambigüe los textos idénticos. Si un término puede tener varios significados, agregue un segundo parámetro para diferenciarlos, por ejemplo, text: qsTr("back", "not front"); text: qsTr("back", "go backward").
- Utilice %x para insertar parámetros en una cadena de caracteres, por ejemplo, text: qsTr("File %1 of %2").arg(counter).arg(total).
- Utilice %Lx para localizar los números, por ejemplo, text: qsTr("%L1").arg(total).
- Internacionalice las fechas, las horas y las divisas, por ejemplo, text: qsTr("Date %1").arg(Date().toLocaleString(Qt.locale())).
- Utilice QT_TR_NOOP() para las cadenas de caracteres de texto de los datos que se pueden traducir.
- Utilice la configuración regional para extender las características de localización siempre que sea posible.
Consulte todos los detalles de cada paso en Internacionalización y localización con Qt Quick.
También debería tener en cuenta la internacionalización a la hora de incluir imágenes en su aplicación. La imagen que muestra puede variar dependiendo del idioma seleccionado. En el siguiente ejemplo se muestra cómo detectar si se está utilizando un idioma de derecha a izquierda (RTL) y se establece una propiedad definida por el usuario llamada mirror. A continuación, esta propiedad se utiliza para determinar la imagen que se va a mostrar.
property var localeForRTL:["ar", "he", "he-IL"]
property bool mirror: localeForRTL.indexOf(Qt.locale().uiLanguages[0]) > -1
Image{
source: mirror ? "./RTLimage.png" : "./Image.png"
}
lupdate
lupdate es una herramienta de línea de comandos de Qt que se encuentra en la carpeta de instalación de AppStudio.
Para ejecutarla, abra una ventana cmd en el directorio del proyecto y ejecute el siguiente comando. Tenga en cuenta que el punto utilizado en cada uno de los siguientes ejemplos representa el directorio actual, que es la carpeta de la aplicación que contiene los archivos .qml.
En Windows:
C:\Users\UserName\ArcGIS\AppStudio\Apps\MyApp>"C:\Users\Username\Applications\ArcGIS\AppStudio\bin\lupdate.exe" . -extensions qml -ts languages/MyApp_en.ts
En macOS:
/Users/UserName/applications/ArcGIS/AppStudio/tools/lupdate . -extensions qml -ts languages/MyApp_en.ts
En Ubuntu:
~/Applications/ArcGIS/AppStudio/bin/lupdate . -extensions qml -ts languages/MyApp_en.ts
Se creará un nuevo archivo denominado MyApp_en.ts.
Las traducciones para los idiomas nuevos se crean copiando y el cambiando el nombre del archivo MyApp_en.ts una vez para cada idioma requerido y, a continuación, sustituyendo "en" por el código del idioma en cuestión. Los archivos .ts se pueden editar a continuación con Qt Linguist.
Para obtener información detallada, consulte Using lupdate.
Qt Linguist
Linguist es una herramienta de GUI que se encuentra en la carpeta de instalación de AppStudio. Abra los archivos .ts que se crearon con lupdate en Linguist y agregue las traducciones para cada una de las cadenas de caracteres mostradas. La herramienta lrelease solo procesará las cadenas de caracteres marcadas como completadas.
Para obtener más información, consulte Qt Linguist Manual.
lrelease
Puede generar los archivos de versión de las siguientes maneras:
- Abra el archivo .ts completado en Linguist y, en el menú Archivo, elija Versión. Se creará un archivo .qm correspondiente a su archivo .ts.
- Use la herramienta de línea de comandos. lrelease es una herramienta de comando de Qt que se encuentra en la carpeta de instalación de AppStudio. Los archivos de traducción en tiempo de ejecución se pueden generar ejecutando el siguiente comando, enumerando cada archivo de idioma que se va a generar:
lrelease.exe languages\MyApp_ar.ts languages\MyApp_fr.ts
- Pase la opción -help a lrelease para ver las opciones admitidas.
Para obtener más información, consulte Using lrelease.
Implementar archivos de localización en su aplicación
Antes de usar la herramienta Make para crear archivos de instalación, recuerde incluir los archivos .qm en su proyecto. A continuación, le recomendamos una convención de nomenclatura de carpetas:
MyApp > languages > qml_localecode.qm
Por ejemplo, si la aplicación contiene localización para alemán, francés y chino, debería incluir los archivos siguientes:
- MyApp > languages > qml_de.qm
- MyApp > languages > qml_fr.qm
- MyApp > languages > qml_zh.qm
También debe indicar a la aplicación dónde se encuentran estos archivos. Esta información se define en el archivo appinfo.json. Abra el archivo appinfo.json en un editor de texto y agregue la propiedad siguiente:
"translations": {
"fileName": "qml",
"path": "languages"
},
En el ejemplo anterior, el nombre del archivo es qml. No es necesario que incluya el guión bajo ni el código de idioma. El nombre de la carpeta en la muestra de código es languages, que también coincide con el ejemplo de arriba. Puede elegir su propia carpeta y nombres de archivos, pero no olvide especificarlos en el archivo appinfo.json.
Cuando ejecute la aplicación en un dispositivo con una configuración regional del sistema que coincida con uno de los idiomas para los que ha proporcionado un archivo de traducción, la aplicación mostrará automáticamente las cadenas de caracteres del archivo correcto. Una alternativa a efectos de prueba es el parámetro de la línea de comandos --locale, que invalidará la configuración regional del sistema con cualquier código de configuración regional que haya incluido en el parámetro. Por ejemplo, al incorporar --locale fr a la línea de comandos, la aplicación se iniciará utilizando los archivos de localización en francés. Estos parámetros de línea de comandos también se pueden utilizar al ejecutar su aplicación en AppStudio, ajustando para ello el parámetro en el campo Argumentos de línea de comandos de la pestaña Proyectos de Qt Creator.
Al utilizar una aplicación con la que se proporcionan archivos de traducción y están configurados, es posible cargar distintos archivos de traducción en la aplicación con el método loadTranslator del componente AppFramework.
Localizar su listado de tiendas
Si ha decidido distribuir su aplicación a través de una tienda, y si ha hecho el esfuerzo de globalizar su aplicación, debería plantearse la posibilidad de localizar también el listado de tiendas. Tanto la App Store como Google Play ofrecen la posibilidad de localizar su listado de tiendas. En ambos casos, puede proporcionar descripciones y capturas de pantalla localizadas para el idioma de cada tienda en el único envío de su aplicación.
Para obtener más información, consulte lo siguiente:
- Localizar información de App Store para Apple App Store
- Traducir y localizar su aplicación para Google Play