L'internationalisation avec Qt
L'internationalisation et la localisation d'une application sont les processus d'adaptation de l'application aux différentes langues, aux différences 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 modifications techniques.
- Lalocalisation consiste à adapter les applications internationalisées à une région ou à une langue spécifique en ajoutant des composants spécifiques à la région (tels que les formats de date, d'heure et de nombre) et en traduisant le texte.
La nécessité de l'internationalisation va de la modification de l'orthographe à la possibilité pour l'application de fonctionner dans différentes langues et d'utiliser des techniques de saisie, un codage des caractères et des conventions de présentation différents.
Tous les contrôles de saisie et toutes les méthodes de dessin de texte de Qt offrent un support intégré pour toutes les langues prises en charge. Le moteur de polices intégré rend correctement le texte qui contient des caractères provenant d'une variété de systèmes d'écriture différents en même temps.
| Pour plus d'informations sur | Voir |
|---|---|
| Internationalisation du code source | Écrire le code source pour la traduction |
| Configurer et déployer des traductions, ainsi qu'utiliser les traductions des modules Qt existants | Localisation des applications |
| Utiliser les outils de traduction de Qt | Qt Linguist Manuel |
La vidéo suivante montre comment internationaliser et localiser une application simple :
Classes Qt pour l'internationalisation
Les classes suivantes permettent d'internationaliser les applications Qt.
Compare les chaînes de caractères en fonction d'un algorithme de collation localisé. | |
Peut être utilisé pour accélérer la collation des chaînes de caractères | |
Convertit les nombres et leurs représentations sous forme de chaînes de caractères dans différentes langues. | |
Classe de base pour le codage et le décodage de texte | |
Décodeur de texte basé sur des états | |
Encodeur de texte basé sur l'état | |
Conversions entre les encodages de texte | |
Décodeur basé sur l'état | |
Encodeur basé sur l'état | |
Prise en charge de l'internationalisation pour la sortie du texte |
Voir Écrire du code source pour la traduction pour plus d'informations sur l'utilisation des classes dans les applications.
Langues et systèmes d'écriture
Qt supporte la plupart des languages utilisés aujourd'hui.
Les contrôles d'entrée, tels que le type Qt Quick TextInput et les classes QLineEdit, QTextEdit et dérivées, ainsi que les contrôles d'affichage, tels que le type Text et la classe QLabel, gèrent les caractéristiques spéciales suivantes des différents systèmes d'écriture :
- Sauts de ligne
Certaines langues asiatiques s'écrivent sans espace entre les mots. Le saut de ligne peut se produire soit après n'importe quel caractère (avec des exceptions) comme en chinois, japonais et 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'écrivent de gauche à droite. Le comportement exact est défini dans l'annexe technique n° 9 d'Unicode.
- Non-espacement ou marques diacritiques, telles que les accents ou les trémas dans les langues européennes
Certaines langues, comme le vietnamien, font un usage intensif de ces marques et certains caractères peuvent avoir plus d'une marque en même temps pour clarifier la prononciation.
- Ligatures
Dans des contextes particuliers, certaines paires de caractères sont remplacées par un glyphe combiné formant une ligature. Les ligatures
fletfiutilisées dans la composition des livres américains et européens en sont des exemples courants.
Le moteur de texte de Qt prend en charge différentes writing systems qui fonctionnent sur toutes les plates-formes si les polices permettant de les rendre sont installées.
Il n'est pas nécessaire de connaître le système d'écriture utilisé dans une langue particulière, à moins que vous ne souhaitiez écrire vos propres contrôles de saisie de texte. Dans certaines langues, comme l'arabe ou les langues du sous-continent indien, la largeur et la forme d'un glyphe changent en fonction des caractères qui l'entourent. Pour en tenir compte dans le code C++, utilisez QTextLayout. L'écriture de contrôles d'entrée nécessite également une certaine connaissance des scripts dans lesquels ils seront utilisés. En général, le plus simple est de sous-classer QLineEdit ou QTextEdit.
Encodage
Le codage concerne à la fois les fichiers source de l'application et les fichiers texte que l'application 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 l'encodage prédominant, y compris dans Qt C++.
L'outil lupdate extrait les chaînes de l'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. Pour éviter les problèmes d'encodage, il convient de limiter le code source à l'ASCII et d'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 en encodage UTF-8, qui préserve les informations Unicode tout en ressemblant à de l'ASCII pur si le texte est entièrement ASCII. Pour convertir Unicode en codage local sur 8 bits, utilisez QString::toLocal8Bit(). Sur les systèmes Unix, cela équivaut à toUtf8(). Sous Windows, c'est la page de code actuelle du système qui est utilisée.
Pour convertir UTF-8 et le codage local 8 bits en QString, utilisez les fonctions de commodité QString::fromUtf8() et QString::fromLocal8Bit().
Encodage des entrées/sorties de texte
Utilisez QTextStream::setEncoding() pour définir le codage commun des flux de texte.
Si vous avez besoin d'un autre encodage, utilisez la classe QTextCodec du module Qt5Compat.
Au démarrage d'une application, la locale de la machine détermine l'encodage 8 bits utilisé pour les données externes 8 bits. QTextCodec::codecForLocale() renvoie un codec que vous pouvez utiliser pour convertir l'encodage de cette locale en Unicode.
L'application peut parfois nécessiter un codage autre que le codage local 8 bits par défaut. Par exemple, une application dans une locale cyrillique KOI8-R (la locale standard de facto en Russie) peut avoir besoin de sortir le cyrillique dans l'encodage ISO 8859-5. Le code pour cela serait le suivant :
QString string = ...; // some Unicode text QTextCodec *codec = QTextCodec::codecForName("ISO 8859-5"); QByteArray encodedString = codec->fromUnicode(string);
Le code suivant démontre la conversion du cyrillique ISO 8859-5 en Unicode :
QByteArray encodedString = ...; // some ISO 8859-5 encoded text QTextCodec *codec = QTextCodec::codecForName("ISO 8859-5"); QString string = codec->toUnicode(encodedString);
Pour une liste complète des encodages pris en charge, voir la documentation de QTextCodec.
Systèmes d'exploitation et de fenêtrage
Certains des systèmes d'exploitation et des systèmes de fenêtrage sur lesquels Qt fonctionne n'ont qu'un support limité pour l'Unicode. Le niveau de support disponible dans le système sous-jacent a une certaine influence sur le support que Qt peut fournir sur ces plates-formes, bien qu'en général les applications Qt ne doivent pas trop se préoccuper des limitations spécifiques à la plate-forme.
Unix/X11
- Qt cache les polices et les méthodes d'entrée orientées locales et fournit une entrée et une sortie Unicode.
- La plupart des variantes d'Unix utilisent par défaut les conventions du système de fichiers telles que UTF-8. Toutes les fonctions de fichier de Qt autorisent l'Unicode, mais convertissent les noms de fichiers au codage local de 8 bits, car c'est la convention Unix.
- Les entrées/sorties de fichiers utilisent par défaut le codage 8 bits local, avec les options Unicode dans QTextStream.
- Certaines distributions Unix plus anciennes ne prennent que partiellement en charge certaines langues. Par exemple, même si vous avez un répertoire
/usr/share/locale/ja_JP.EUC, vous ne pouvez pas afficher de texte japonais à moins d'installer des polices japonaises et que le répertoire soit complet. Pour de meilleurs résultats, utilisez les locales complètes de votre fournisseur de système.
Linux
- Qt offre un support Unicode complet, y compris les méthodes d'entrée, les polices, le presse-papiers et le glisser-déposer.
- Le système de fichiers est codé en UTF-8 sur toutes les distributions Linux modernes. Les entrées/sorties de fichiers se font par défaut en UTF-8.
Windows
- Qt fournit un support Unicode complet, y compris les méthodes d'entrée, les polices, le presse-papiers, le glisser-déposer et les noms de fichiers.
- L'E/S de fichier est par défaut en Latin1, avec des options Unicode sur QTextStream. Cependant, certains programmes Windows ne comprennent pas les fichiers texte Unicode big-endian, même si c'est l'ordre prescrit par la norme Unicode en l'absence de protocoles de plus haut niveau.
Sujets connexes
Localisation des applications Qt et Qt Quick dans plusieurs langues. | |
Guide de référence pour les méta-chaînes utilisées dans le système de traduction de Qt | |
Utilisation de Qt Linguist pour internationaliser votre application Qt | |
Utilisation des outils de traduction de Qt : lupdate, lrelease, et lupdate. Qt Linguist | |
L'internationalisation basée sur les identifiants de texte permet de prendre en charge des projets à grande échelle avec de nombreuses localités cibles et de nombreux textes à traduire. | |
Un résumé des règles de traduction pour les formes plurielles produites par les outils de traduction de Qt. | |
Écrire le code source qui permet 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.