En esta página

Internacionalización con Qt

La internacionalización y la localización de una aplicación son los procesos de adaptación de la aplicación a diferentes idiomas, diferencias regionales y requisitos técnicos de un mercado objetivo.

  • Internacionalizar significa diseñar una aplicación de modo que pueda adaptarse a varios idiomas y regiones sin cambios de ingeniería.
  • Lalocalización consiste en adaptar las aplicaciones internacionalizadas a una región o idioma concretos añadiendo componentes específicos (como formatos de fecha, hora y número) y traduciendo el texto.

La necesidad de internacionalización abarca desde cambios ortográficos hasta permitir que la aplicación funcione en distintos idiomas y utilice diferentes técnicas de entrada, codificación de caracteres y convenciones de presentación.

Todos los controles de entrada y métodos de dibujo de texto en Qt ofrecen soporte integrado para todos los idiomas soportados. El motor de fuentes incorporado renderiza correctamente textos que contienen caracteres de distintos sistemas de escritura al mismo tiempo.

Para más información sobreConsulte
Internacionalización del código fuenteEscribir código fuente para su traducción
Configuración y despliegue de traducciones, así como uso de traducciones de módulos Qt existentesLocalización de aplicaciones
Uso de las herramientas de traducción de QtQt Linguist Manual

El siguiente vídeo muestra cómo internacionalizar y localizar una sencilla aplicación de ejemplo:

Clases Qt para la internacionalización

Las siguientes clases soportan la internacionalización de aplicaciones Qt.

QCollator

Compara cadenas según un algoritmo de cotejo localizado

QCollatorSortKey

Puede utilizarse para acelerar el cotejo de cadenas

QLocale

Convierte entre números y sus representaciones de cadena en varios idiomas

QStringConverter

Clase base para codificar y descodificar texto

QStringDecoder

Descodificador de texto basado en estados

QStringEncoder

Codificador de texto basado en estados

QTextCodec

Conversiones entre codificaciones de texto

QTextDecoder

Descodificador basado en el estado

QTextEncoder

Codificador basado en el estado

QTranslator

Soporte de internacionalización para la salida de texto

Si desea más información sobre cómo utilizar las clases en las aplicaciones, consulte Escribir código fuente para traducción.

Lenguajes y sistemas de escritura

Qt soporta la mayoría de los languages en uso hoy en día.

Los controles de entrada, como el tipo Qt Quick TextInput y las clases QLineEdit, QTextEdit, y derivadas, así como los controles de visualización, como el tipo Text y la clase QLabel manejan las siguientes características especiales de los diferentes sistemas de escritura:

  • Saltos de línea

    Algunas lenguas asiáticas se escriben sin espacios entre las palabras. Los saltos de línea pueden producirse después de cualquier carácter (con excepciones), como en chino, japonés y coreano, o después de los límites lógicos de las palabras, como en tailandés.

  • Escritura bidireccional

    El árabe y el hebreo se escriben de derecha a izquierda, excepto los números y el texto inglés incrustado, que se escribe de izquierda a derecha. El comportamiento exacto se define en el Anexo Técnico nº 9 de Unicode.

  • Marcas no espaciadoras o diacríticas, como acentos o diéresis en lenguas europeas

    Algunas lenguas, como el vietnamita, hacen un amplio uso de estas marcas y algunos caracteres pueden tener más de una marca al mismo tiempo para aclarar la pronunciación.

  • Ligaduras

    En contextos especiales, algunos pares de caracteres se sustituyen por un glifo combinado que forma una ligadura. Ejemplos comunes son las ligaduras fl y fi utilizadas en la composición tipográfica de libros estadounidenses y europeos.

El motor de texto de Qt admite diferentes writing systems que funcionan en todas las plataformas si se instalan los tipos de letra para representarlas.

No es necesario que conozcas el sistema de escritura utilizado en un idioma concreto, a menos que quieras escribir tus propios controles de entrada de texto. En algunos idiomas, como el árabe o las lenguas del subcontinente indio, la anchura y la forma de un glifo cambian en función de los caracteres que lo rodean. Para tener esto en cuenta en el código C++, utilice QTextLayout. Escribir controles de entrada también requiere cierto conocimiento de los scripts en los que se van a utilizar. Normalmente, lo más sencillo es subclasificar QLineEdit o QTextEdit.

Codificación

La codificación es relevante tanto para los archivos fuente de la aplicación como para los archivos de texto que la aplicación lee o escribe.

Codificación del código fuente

Los documentos QML siempre se codifican en formato UTF-8. Desde Qt 6, UTF-8 de 8 bits es la codificación predominante también en Qt C++.

La herramienta lupdate extrae cadenas de interfaz de usuario de su aplicación. Por defecto, espera que todo el código fuente esté codificado en UTF-8.

Sin embargo, algunos editores, como Visual Studio, utilizan una codificación diferente por defecto. Una forma de evitar problemas de codificación es limitar cualquier código fuente a ASCII, y utilizar secuencias de escape para cadenas traducibles con otros caracteres, por ejemplo:

label->setText(tr("F\374r \310lise"));

QString::toUtf8() devuelve el texto en codificación UTF-8, que conserva la información Unicode al tiempo que parece ASCII plano si el texto es totalmente ASCII. Para convertir Unicode a la codificación local de 8 bits, utilice QString::toLocal8Bit(). En los sistemas Unix, equivale a toUtf8(). En Windows, se utiliza la página de códigos actual del sistema.

Para convertir de UTF-8 y la codificación local de 8 bits a QString, utilice las funciones de conveniencia QString::fromUtf8() y QString::fromLocal8Bit().

Codificación de entrada/salida de texto

Utilice QTextStream::setEncoding() para establecer la codificación común para flujos de texto.

Si necesita alguna otra codificación heredada, utilice la clase QTextCodec del módulo Qt5Compat.

Cuando se inicia una aplicación, la configuración regional de la máquina determina la codificación de 8 bits utilizada para los datos externos de 8 bits. QTextCodec::codecForLocale() devuelve un códec que puede utilizar para convertir entre esta codificación de configuración regional y Unicode.

La aplicación puede requerir ocasionalmente una codificación distinta de la codificación local de 8 bits predeterminada. Por ejemplo, una aplicación en una configuración regional cirílica KOI8-R (la configuración regional estándar de facto en Rusia) podría necesitar la salida cirílica en la codificación ISO 8859-5. El código para esto sería El código sería el siguiente:

QString string = ...; // some Unicode text

QTextCodec *codec = QTextCodec::codecForName("ISO 8859-5");
QByteArray encodedString = codec->fromUnicode(string);

El siguiente código demuestra la conversión de ISO 8859-5 cirílico a Unicode:

QByteArray encodedString = ...; // some ISO 8859-5 encoded text

QTextCodec *codec = QTextCodec::codecForName("ISO 8859-5");
QString string = codec->toUnicode(encodedString);

Para obtener una lista completa de las codificaciones compatibles, consulte la documentación de QTextCodec.

Sistemas operativos y de ventanas

Algunos de los sistemas operativos y sistemas de ventanas en los que se ejecuta Qt sólo tienen soporte limitado para Unicode. El nivel de soporte disponible en el sistema subyacente tiene cierta influencia en el soporte que Qt puede proporcionar en esas plataformas, aunque en general las aplicaciones Qt no necesitan preocuparse demasiado por las limitaciones específicas de cada plataforma.

Unix/X11

  • Qt oculta las fuentes y métodos de entrada orientados a la localización y proporciona entrada y salida Unicode.
  • La mayoría de las variantes de Unix utilizan convenciones del sistema de archivos como UTF-8 por defecto. Todas las funciones de archivo de Qt permiten Unicode, pero convierten los nombres de archivo a la codificación local de 8 bits, ya que ésta es la convención de Unix.
  • La E/S de archivos utiliza por defecto la codificación local de 8 bits, con opciones Unicode en QTextStream.
  • Algunas distribuciones antiguas de Unix sólo contienen soporte parcial para algunas configuraciones regionales. Por ejemplo, aunque tenga un directorio /usr/share/locale/ja_JP.EUC, no podrá mostrar texto japonés a menos que instale fuentes japonesas y el directorio esté completo. Para obtener mejores resultados, utilice las configuraciones regionales completas de su proveedor de sistemas.

Linux

  • Qt proporciona soporte Unicode completo, incluyendo métodos de entrada, fuentes, portapapeles y arrastrar y soltar.
  • El sistema de archivos está codificado en UTF-8 en todas las distribuciones modernas de Linux. La entrada y salida de archivos se realiza por defecto en UTF-8.

Windows

  • Qt ofrece compatibilidad total con Unicode, incluidos los métodos de entrada, las fuentes, el portapapeles, la función de arrastrar y soltar y los nombres de archivo.
  • La E/S de archivos está predeterminada en Latin1, con opciones Unicode en QTextStream. Sin embargo, algunos programas de Windows no entienden los archivos de texto Unicode big-endian a pesar de que ese es el orden prescrito por el estándar Unicode en ausencia de protocolos de nivel superior.

Localizing Applications

Localización de aplicaciones Qt y Qt Quick a varios idiomas.

Meta strings reference

Guía de referencia para cadenas meta utilizadas en el sistema de traducción de Qt

Qt Linguist Examples

Uso de Qt Linguist para internacionalizar su aplicación Qt

Qt Linguist Manual

Uso de las herramientas de traducción de Qt: lupdate, lrelease y Qt Linguist

Text ID based translations

La internacionalización basada en ID de texto es compatible con proyectos a gran escala con muchas localizaciones de destino y muchos textos que traducir.

Translation Rules for Plural Forms

Un resumen de las reglas de traducción para formas plurales producidas por las herramientas de traducción de Qt.

Writing Source Code for Translation

Escribiendo código fuente que permite la localización de aplicaciones.

© 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.