2010-10-03 9 views
2

J'écris une application C++ qui doit être indépendante des paramètres régionaux, j'ai donc décidé d'utiliser UTF-16 comme représentation en mémoire pour les chaînes/textes (l'application doit être aussi plate-forme indépendante que possible). Pour localiser les messages de l'application, je veux utiliser la bibliothèque gettext de GNU. Puisque cette bibliothèque semble utiliser la bibliothèque GNU's libunistring en interne, je veux utiliser celle-ci aussi.C++ l10n, solution i18n avec GNU gettext, libunistring

Est-ce une bonne solution pour i18n, l10n? Je veux dire qu'il y aura beaucoup de code C dans mes classes C++ (je n'ai pas trouvé de wrapper C++ pour la bibliothèque libunistring).

Stefan

PS: Il est ma première grande application C++.

+0

Est-ce une application graphique? Si c'est dans cette boîte à outils que vous l'écrivez? –

+0

Oui, ce devrait être une application graphique, mais je veux d'abord écrire une interface de ligne de commande, donc je n'ai pas encore choisi une boîte à outils. – Stefan

+0

La question sur l'interface graphique est valide, car Qt a par exemple une représentation intégrée pour les chaînes Unicode (QString). Et différent (non-gettext) modèle de localisation. Il pourrait être plus facile (mais pas nécessairement mieux) approche. –

Répondre

3
+0

La bibliothèque libunistring prend également en charge UTF-8 en tant que représentation en mémoire, il n'y a donc aucun problème à l'utiliser. Connaissez-vous une meilleure bibliothèque pour faire cela? Le libunistring ne semble pas si bien documenté. – Stefan

+0

@Downvoter: L'utilisation de UTF-16 dans le code C++ pourrait être problématique, surtout si l'on doit convertir entre UTF-16 et UTF-8. Je ne vois pas de raison valable pour downvoting cette réponse. –

1

Si elle est une application IUG écrit en C++, qt pourrait être une bonne boîte à outils pour le faire en Il comprend sa propre classe de cordes et. son propre support d'internationalisation:

http://doc.trolltech.com/4.7/internationalization.html.

Vous pouvez également utiliser les classes core non gui elles-mêmes (elles sont dans leur propre espace de noms QtCore séparé de l'espace de noms QtGui et sont compilées pour séparer les bibliothèques liées dynamiquement).