Can it be the case that, when one uses gettext, this works: # Some way to get _() as a builtin translation = gettext.GNUTranslations(open('mylanguage.mo','rb')) translation.install() # This works: def test(): print _("Hello") # This works not as expected: def [html] test2(): print _("Hello") Seems that python's _ method (the builtin one, via the install() method) is only for strings, but in the second case the "Hello" is no longer a string. What is your method to i10n/i18n Quixote Applications?