Sur cette page

L'internationalisation avec Qt

L'internationalisation et la localisation d'une application désignent les processus d'adaptation de celle-ci à différentes langues, aux spécificités régionales et aux exigences techniques d'un marché cible.

  • L'internationalisation consiste à concevoir une application de manière à ce qu'elle puisse être adaptée à différentes langues et régions sans modification technique.
  • La localisation consiste à adapter des applications internationalisées à une région ou une langue spécifique en ajoutant des composants propres à la locale (tels que les formats de date, d’heure et de nombres) et en traduisant le texte.

Les besoins en matière d’internationalisation vont des modifications orthographiques à la prise en charge par l’application de différentes langues, en passant par l’utilisation de différentes techniques de saisie, de différents encodages de caractères et de différentes conventions de présentation.

Tous les contrôles de saisie et toutes les méthodes d’affichage de texte de Qt offrent une prise en charge intégrée de toutes les langues prises en charge. Le moteur de polices intégré affiche correctement le texte contenant simultanément des caractères issus de divers systèmes d’écriture.

Pour plus d’informations surVoir
L'internationalisation du code sourceRédaction du code source en vue de sa traduction
Configurer et déployer des traductions, ainsi qu’utiliser les traductions existantes des modules QtLocalisation des applications
Utilisation des outils de traduction QtQt Linguist Manuel

La vidéo suivante montre comment internationaliser et localiser une application simple :

Classes Qt pour l'internationalisation

Les classes suivantes prennent en charge l'internationalisation des applications Qt.

QCollator

Compare des chaînes de caractères selon un algorithme de classement localisé

QCollatorSortKey

Peut être utilisée pour accélérer le tri des chaînes de caractères

QLocale

Effectue la conversion entre les nombres et leurs représentations sous forme de chaînes de caractères dans différentes langues

QStringConverter

Classe de base pour l'encodage et le décodage de texte

QStringDecoder

Décodeur de texte basé sur des états

QStringEncoder

Codeur de texte basé sur des états

QTextCodec

Conversions entre différents encodages de texte

QTextDecoder

Décodeur à états

QTextEncoder

Codeur à états

QTranslator

Prise en charge de l'internationalisation pour la sortie de texte

Consultez la section « Écriture de code source en vue de la traduction » pour plus d'informations sur l'utilisation de ces classes dans les applications.

Langues et systèmes d'écriture

Qt prend en charge la plupart des languages utilisées aujourd’hui.

Les contrôles de saisie, tels que le type « Qt Quick » ( TextInput ) et les classes « QLineEdit », « QTextEdit » et leurs dérivés, ainsi que les contrôles d’affichage, tels que le type « Text » et la classe « QLabel », gèrent les particularités suivantes des différents systèmes d’écriture :

  • Sauts de ligne

    Certaines langues asiatiques s’écrivent sans espaces entre les mots. Les sauts de ligne peuvent se produire soit après n’importe quel caractère (à quelques exceptions près), comme en chinois, en japonais et en coréen, soit après les limites logiques des mots, comme en thaï.

  • Écriture bidirectionnelle

    L’arabe et l’hébreu s’écrivent de droite à gauche, à l’exception des chiffres et du texte anglais intégré, qui s’écrit de gauche à droite. Le comportement exact est défini dans l’annexe technique n° 9 de l’Unicode.

  • Les signes non espacés ou diacritiques, tels que les accents ou les trémas dans les langues européennes

    Certaines langues, comme le vietnamien, utilisent abondamment ces signes, et certains caractères peuvent comporter plusieurs signes à la fois afin de clarifier la prononciation.

  • Ligatures

    Dans certains contextes particuliers, certaines paires de caractères sont remplacées par un glyphe combiné formant une ligature. Parmi les exemples courants, on peut citer les ligatures « fl » et « fi » utilisées dans la composition typographique des livres américains et européens.

Le moteur de texte de Qt prend en charge différentes ligatures « writing systems » qui fonctionnent sur toutes les plateformes, à condition que les polices nécessaires à leur rendu soient installées.

Vous n’avez pas besoin de connaître le système d’écriture utilisé dans une langue particulière, sauf si vous souhaitez écrire vos propres contrôles de saisie de texte. Dans certaines langues, telles que l’arabe ou les langues du sous-continent indien, la largeur et la forme d’un glyphe varient en fonction des caractères environnants. Pour prendre cela en compte dans le code C++, utilisez les fonctions ` QTextLayout`. L’écriture de contrôles de saisie nécessite également une certaine connaissance des scripts dans lesquels ils seront utilisés. En général, la méthode la plus simple consiste à créer une sous-classe de ` QLineEdit ` ou de ` QTextEdit`.

Encodage

L'encodage concerne à la fois les fichiers source de l'application et les fichiers texte que celle-ci lit ou écrit.

Encodage du code source

Les documents Qml sont toujours encodés au format UTF-8. Depuis Qt 6, l’UTF-8 8 bits est également l’encodage prédominant dans Qt C++.

L'outil lupdate extrait les chaînes d'interface utilisateur de votre application. Il s'attend à ce que tout le code source soit encodé en UTF-8 par défaut.

Cependant, certains éditeurs, tels que Visual Studio, utilisent un encodage différent par défaut. Une façon d’éviter les problèmes d’encodage consiste à limiter le code source à l’ASCII et à utiliser des séquences d’échappement pour les chaînes traduisibles contenant d’autres caractères, par exemple :

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

QString::toUtf8() renvoie le texte au format UTF-8, ce qui préserve les informations Unicode tout en donnant l’apparence d’un texte ASCII brut si celui-ci est entièrement composé de caractères ASCII. Pour convertir l’Unicode en encodage 8 bits local, utilisez QString::toLocal8Bit(). Sur les systèmes Unix, cela équivaut à toUtf8(). Sous Windows, la page de codes actuelle du système est utilisée.

Pour convertir de l’UTF-8 et d’un encodage local à 8 bits vers QString, utilisez les fonctions de commodité QString::fromUtf8() et QString::fromLocal8Bit().

Encodage des entrées/sorties de texte

Utilisez QTextStream::setEncoding() pour définir un encodage commun pour les flux de texte.

Si vous avez besoin d’un autre encodage hérité, utilisez la classe ` QTextCodec ` du module Qt5Compat.

Au démarrage d'une application, les paramètres régionaux de la machine déterminent l'encodage 8 bits utilisé pour les données externes en 8 bits. La fonction QTextCodec::codecForLocale() renvoie un codec que vous pouvez utiliser pour effectuer la conversion entre cet encodage régional et l'Unicode.

L’application peut parfois nécessiter un encodage autre que l’encodage 8 bits local par défaut. Par exemple, une application dans une locale cyrillique KOI8-R (la locale standard de facto en Russie) pourrait avoir besoin d’afficher du cyrillique dans l’encodage ISO 8859-5. Le code correspondant serait le suivant :

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

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

Le code suivant illustre la conversion du cyrillique ISO 8859-5 vers Unicode :

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

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

Pour obtenir la liste complète des encodages pris en charge, consultez la documentation d’ QTextCodec.

Systèmes d'exploitation et environnements graphiques

Certains des systèmes d’exploitation et environnements graphiques sur lesquels Qt s’exécute ne prennent en charge l’Unicode que de manière limitée. Le niveau de prise en charge disponible dans le système sous-jacent a une certaine influence sur la prise en charge que Qt peut fournir sur ces plateformes, bien qu’en général, les applications Qt n’aient pas à se soucier outre mesure des limitations spécifiques à chaque plateforme.

Unix/X11

  • Qt masque les polices et les méthodes de saisie liées aux paramètres régionaux et prend en charge la saisie et l’affichage Unicode.
  • La plupart des variantes d’Unix utilisent par défaut des conventions de système de fichiers telles que l’UTF-8. Toutes les fonctions de fichiers de Qt prennent en charge l’Unicode, mais convertissent les noms de fichiers au format 8 bits local, conformément à la convention Unix.
  • Les E/S de fichiers utilisent par défaut l’encodage local 8 bits, avec des options Unicode disponibles dans ` QTextStream`.
  • Certaines anciennes distributions Unix ne prennent en charge que partiellement certaines locales. Par exemple, même si vous disposez d’un répertoire /usr/share/locale/ja_JP.EUC, vous ne pouvez pas afficher de texte en japonais à moins d’installer des polices japonaises et de disposer d’un répertoire complet. Pour obtenir les meilleurs résultats, utilisez les locales complètes fournies par le fournisseur de votre système.

Linux

  • Qt offre une prise en charge complète d’Unicode, y compris les méthodes de saisie, les polices, le presse-papiers et le glisser-déposer.
  • Le système de fichiers est encodé en UTF-8 sur toutes les distributions Linux modernes. Les E/S de fichiers utilisent UTF-8 par défaut.

Windows

  • Qt offre une prise en charge complète d’Unicode, y compris les méthodes de saisie, les polices, le presse-papiers, le glisser-déposer et les noms de fichiers.
  • Les E/S de fichiers utilisent par défaut le codage Latin1, avec des options Unicode disponibles dans le fichier « QTextStream ». Cependant, certains programmes Windows ne prennent pas en charge les fichiers texte Unicode en format «big-endian», bien que ce soit l'ordre prescrit par la norme Unicode en l'absence de protocoles de niveau supérieur.

Localizing Applications

Localisation des applications Qt et Qt Quick en plusieurs langues.

Meta strings reference

Guide de référence sur les méta-chaînes utilisées dans le système de traduction de Qt

Qt Linguist Examples

Utilisation d’ Qt Linguist pour internationaliser votre application Qt

Qt Linguist Manual

Utilisation des outils de traduction Qt : lupdate, lrelease et Qt Linguist

Text ID based translations

L'internationalisation basée sur les identifiants de texte (Text ID) prend en charge les projets à grande échelle comportant de nombreuses locales cibles et de nombreux textes à traduire

Translation Rules for Plural Forms

Résumé des règles de traduction pour les formes plurielles générées par les outils de traduction de Qt.

Writing Source Code for Translation

Écrire du code source permettant la localisation des applications.

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