Il 15/06/2017 15:22, Peter Otten ha scritto:
pozz wrote:
I know I can load multiple gettext.translation:
it = gettext.translation('test', localedir="locale", languages=["it"])
es = gettext.translation('test', localedir="locale", languages=["es"])
and install one translation at run-time when I want at a later time
(when the user selects a new language):
it.install()
or
es.install()
However the problem is that strings already translated are not
translated again when a new translation is installed. So they stay at
the language selected during start-up and don't change after a new
install().
One solution is to restart the application, but I think there's a better
and more elegant solution.
You need a way to defer the translation until the string is actually used.
The documentation has a few ideas
https://docs.python.org/dev/library/gettext.html#deferred-translations
and here's another one -- perform the translation in the __str__ method of
a custom class:
> [...]
It's a nice trick. However you will have a string that isn't a string,
but a class. I think you can't use the class everywhere you can use a
string. For example, len() can't be called.
--
https://mail.python.org/mailman/listinfo/python-list