Je suis une application internationalisant Python, avec deux objectifs en tête:Quelle est la meilleure façon d'internationaliser une application Python avec plusieurs domaines i18n?
Les charges d'application des classes de plusieurs paquets, chacun avec son propre domaine i18n. Ainsi, les modules du paquet A utilisent le domaine A, les modules du paquet B utilisent le domaine B, etc.
Les paramètres régionaux peuvent être modifiés pendant l'exécution de l'application.
Module de Python gettext
fait internationalisant un seul domaine application seule langue très facile; vous venez de définir les paramètres régionaux, puis appelez gettext.install()
, qui trouve le droit Translation
et installe sa méthode ugettext
dans l'espace de noms global comme _
. Mais évidemment, une valeur globale ne fonctionne que pour un seul domaine, et comme il charge un seul Translation
, il ne fonctionne que pour cette locale.
Je pourrais au lieu de charger le Translation
en haut de chaque module, et lier sa méthode ugettext comme _
. Ensuite, chaque module utiliserait le _
pour son propre domaine. Mais cela se casse toujours lorsque les paramètres régionaux sont modifiés, car _
est incorrect.
Donc je suppose que je pourrais charger le ugettext
correct au début de chaque fonction, mais cela semble terriblement lourd. Une alternative serait de toujours le faire par module, mais au lieu de lier ugettext
, je substituerais ma propre fonction, ce qui permettrait de vérifier les paramètres régionaux actuels, obtenir son Translation
, et de transmettre la chaîne à elle. Est-ce que quelqu'un a une solution plus propre?