#!/usr/bin/env python import gettext locale_dir = './locale' def lang(language='en'): """ Switch to the given language, if it exists. Makes subsequent calls to _() and ngettext() translate to that language where possible. """ try: l = gettext.translation(domain="helloworld", localedir=locale_dir, languages=[language]) l.install(unicode=1, names=['ngettext']) except IOError: # Unsupported language. No translation takes place. import __builtin__ def n_(s, p, n): if n == 1: return s else: return p # install _ and ngettext into the application-wide namespace. __builtin__.__dict__['_'] = lambda s: s __builtin__.__dict__['ngettext'] = n_ lang('de') numWorlds = 1 numTimes = 100 text = _("Hello World" + 10*'!') s = str(numWorlds) + ' ' s += ngettext('World', 'World' + 's', numWorlds) + '\n' s += str(numTimes) + ' ' s += ngettext(u'Time', u'Times', numTimes) + '\n' s += text print s