En esta página

Localización de aplicaciones

Los pasos para localizar aplicaciones incluyen crear aplicaciones traducibles, prepararlas para la traducción, traducir las cadenas y crear archivos de traducción en tiempo de ejecución para la aplicación publicada.

Qt Quick y las aplicaciones Qt C++ utilizan el mismo sistema de localización subyacente: lupdate lrelease , y los archivos fuente de traducción (TS) y archivos QM que generan. Se utilizan las mismas herramientas para el código QML y C++, como se describe en el manualQt Linguist .

Incluso puedes tener cadenas de interfaz de usuario en archivos fuente QML y C++ en la misma aplicación. El sistema creará un único archivo de traducción combinado y las cadenas serán accesibles desde el código QML y C++.

Para localizar aplicaciones internacionalizadas:

Especificar fuentes de traducción en archivos de proyecto Qt

Para permitir que lupdate y lrelease generen archivos TS y QM, actualice el archivo de proyecto de la aplicación para especificar los archivos fuente que contienen el texto a traducir.

Utilice los códigos ISO de idioma y país en el nombre del archivo TS para determinar el idioma que se cargará en tiempo de ejecución. Para obtener más información, consulte Activar la traducción.

La herramienta lupdate extrae las cadenas de la interfaz de usuario de su aplicación. Por defecto, espera que todo el código fuente esté codificado en UTF-8. Para obtener más información, consulte Codificación.

Uso de CMake

Haga que los comandos CMake de Qt para la internacionalización estén disponibles cargando el paquete Qt6LinguistTools.

cmake_minimum_required(VERSION 3.16)
project(myproject)
find_package(Qt6 COMPONENTS Core LinguistTools)

Declare los idiomas soportados con el argumento I18N_TRANSLATED_LANGUAGES de qt_standard_project_setup.

# Declare that the project will have a German and a French translation.
qt_standard_project_setup(I18N_TRANSLATED_LANGUAGES de fr)

Se supone que el código fuente tiene cadenas traducibles al inglés. Puede ajustar el idioma de las cadenas del código fuente con el parámetro qt_standard_project_setup I18N_SOURCE_LANGUAGE .

Llame al comando qt_add_translations en el destino que se supone que debe cargar los archivos .qm en tiempo de ejecución.

qt_add_translations(myapplication)

Si aún no existen, esto creará los archivos myproject_de.ts y myproject_fr.ts. Ver Determinación automática de rutas de archivos .ts sobre cómo se construyen esos nombres de archivo.

Este comando también crea myproject_en.ts, que es el archivo de traducción sólo para plurales. Vea Manejar formas plurales para más detalles. La generación del archivo de sólo plurales puede desactivarse con el argumento NO_GENERATE_PLURALS_TS_FILE.

Todos los archivos fuente de todos los objetivos del proyecto se consideran entradas para la generación de los archivos .ts. Consulte la documentación de referencia de qt_add_translations para obtener más información sobre cómo se recopilan los objetivos del proyecto y cómo excluir objetivos y fuentes únicas.

Uso de qmake

Al utilizar qmake, establezca una declaración condicional para ocultar el código fuente QML del compilador que se indica en la entrada SOURCES o HEADERS del archivo .pro.

La variable SOURCES está pensada para archivos fuente C++. Si incluye archivos fuente QML o JavaScript, el compilador intentará compilarlos como si fueran archivos C++. Como solución, puede utilizar una sentencia condicional lupdate_only{...} para que la herramienta lupdate vea los archivos .qml pero el compilador C++ los ignore.

Por ejemplo, el siguiente fragmento de archivo .pro especifica dos archivos .qml en la aplicación.

lupdate_only{
SOURCES = main.qml \
          MainPage.qml
}

También puede especificar los archivos fuente .qml con una coincidencia comodín. La búsqueda no es recursiva, por lo que debe especificar cada directorio que contenga archivos de origen que contengan cadenas de interfaz de usuario:

lupdate_only{
SOURCES = *.qml \
          *.js \
          content/*.qml \
          content/*.js
}

Desplegar traducciones

La forma más sencilla de desplegar los archivos .qm es incrustándolos en los recursos Qt. El comando qt_add_translations de CMake se encarga automáticamente de ello. Los archivos .qm son accesibles bajo el prefijo de recurso ":/i18n".

# Automatically embed generated .qm files.
qt_add_translations(myapplication)

Alternativamente, los archivos .qm pueden ser desplegados en un directorio en el sistema de archivos. Esto es deseable para aplicaciones más grandes que no quieren mantener todas las traducciones disponibles en la memoria. Pase el argumento QM_FILES_OUTPUT_VARIABLE a qt_add_translations. El comando almacena la lista de archivos .qm generados en la variable especificada. Utilice los comandos de instalación habituales de CMake en los nombres de archivo de esa lista.

# Do not embed generated .qm files.
qt_add_translations(myapplication
    QM_FILES_OUTPUT_VARIABLE qm_files
)

# Install generated .qm files.
install(FILES ${qm_files} DESTINATION translations)

Coloque los archivos .qm necesarios para la aplicación en una ubicación en la que el código del cargador que utiliza QTranslator pueda encontrarlos. Normalmente, se especifica una ruta relativa a QCoreApplication::applicationDirPath().

Además de los archivos QM de la aplicación, necesitas desplegar los archivos QM para los módulos Qt que uses en la aplicación, a menos que estén instalados en el sistema.

Los archivos QM están divididos por módulos y existe un archivo llamado meta catálogo que incluye los archivos QM de todos los módulos. Sin embargo, sólo es necesario desplegar los archivos QM para los módulos que se utilizan en la aplicación.

Puede utilizar la herramienta lconvert en el paso de despliegue para concatenar los archivos QM necesarios en un archivo que coincida con el archivo de metacatálogo. Por ejemplo, para crear un archivo de traducción al alemán para una aplicación que utiliza el módulo Qt Core, Qt GUIy Qt Quick ejecute:

lconvert -o installation_folder/qt_de.qm qtbase_de.qm qtdeclarative_de.qm

Usar traducciones de módulos Qt

Los módulos Qt contienen varios miles de cadenas que también necesitan ser traducidas a los idiomas a los que te diriges. Puedes encontrar varios archivos TS en el repositorio qttranslations. Antes de empezar a traducir Qt, lee la página wiki Traducir Qt a otros idiomas.

Localización de traducciones de Qt

Puedes usar QLibraryInfo::path() para localizar las traducciones de los módulos Qt que usa tu aplicación. Puede solicitar la ruta a las traducciones en tiempo de ejecución pasando QLibraryInfo::TranslationsPath a esta función.

Catálogos disponibles

Los catálogos de traducción de Qt se encuentran en el repositorio qttranslations.

Advertencia: Las traducciones de Qt son contribuciones de la comunidad Qt, y se proporcionan sin ninguna garantía. Las traducciones pueden faltar, estar desactualizadas o ser totalmente incorrectas, hasta el punto de ser maliciosas. Se recomienda auditar cualquier traducción que se envíe.

En Qt 4, hay un gran archivo monolítico .qm por localización. Por ejemplo, el archivo qt_de.qm contiene la traducción al alemán de todas las bibliotecas.

El metacatálogo qt_ contiene las traducciones de Qt aún existentes que se incluyeron en el catálogo qt_ en Qt 4. Se creó para facilitar la portabilidad de aplicaciones de Qt 4 a Qt 5. El metacatálogo depende de traducciones que pueden estar ausentes, porque pertenecen a módulos innecesarios o obsoletos, lo que puede hacer que falle la carga de las traducciones. Si usas módulos que son nuevos en Qt 5 o posteriores en tu aplicación, debes especificar los nombres de los catálogos para esos módulos incluso si usas el meta catálogo.

La siguiente tabla enumera los catálogos de traducción disponibles para los módulos y herramientas Qt en Qt.

Módulo o herramienta QtCatálogo
Qt Bluetoothqtconnectivity
Qt Concurrentqtbase
Qt Coreqtbase
Qt D-Busqtbase
Qt Widgets Diseñadordesigner
Qt GUIqtbase
Qt Helpqt_help
Qt Linguistlinguist
Qt Locationqtlocation
Qt Multimediaqtmultimedia
Qt Networkqtbase
Qt NFCqtconnectivity
Qt Print Supportqtbase
Qt Qmlqtdeclarative
Qt Quickqtdeclarative
Qt Quick Controlsqtdeclarative
Qt Quick Widgetsqtdeclarative
Qt Serial Portqtserialport
Qt SQLqtbase
Qt Widgetsqtbase
Qt WebSocketsqtwebsockets
Qt WebEngineqtwebengine

Ejemplo Módulos Qt esenciales

Por ejemplo, para localizar las traducciones de módulos Qt esenciales, como Qt Core, Qt GUI, Qt Network, y Qt Widgets, añada el siguiente código a la función main():

    QTranslator qtTranslator;
    if (qtTranslator.load(QLocale::system(), u"qtbase"_s, u"_"_s,
                          QLibraryInfo::path(QLibraryInfo::TranslationsPath))) {
        app.installTranslator(&qtTranslator);
    }

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.