与python gae,babel和i18n的国际化.无法输出正确的字符串

tip*_*cky 2 python google-app-engine internationalization babel

jinja_env = jinja2.Environment(loader = jinja2.FileSystemLoader(template_dir),extensions=['jinja2.ext.i18n'], autoescape = True)
jinja_env.install_gettext_translations(i18n)

config['webapp2_extras.i18n'] = {
    'translations_path': 'locale',
    'template_path': 'views'
}

app = webapp2.WSGIApplication([
    ('/', MainController.MainPageHandler)
], config=config, debug=True)
Run Code Online (Sandbox Code Playgroud)

在messages.po文件中.

"Project-Id-Version:PROJECT VERSION \n""Report-Msgid-Bugs-To:EMAIL @ ADDRESS \n""POT-Creation-Date:2013-01-19 19:26 + 0800 \n""PO-修订日期:2013-01-19 19:13 + 0800 \n""最后翻译:全名\n""语言 - 团队:en_US \n""复数形式:nplurals = 2;复数=(n! = 1)\n""MIME-Version:1.0 \n""Content-Type:text/plain; charset = utf-8 \n""Content-Transfer-Encoding:8bit \n""Generated-By:Babel 0.9 0.6 \n"

#~msgid"Hello-World"

#~msgstr"Hello World"

在处理程序中:

from webapp2_extras import i18n

from webapp2_extras.i18n import gettext as _

class MainPageHandler(Handler.Handler):
    def get(self):
        locale = self.request.GET.get('locale', 'en_US')
        i18n.get_i18n().set_locale(locale)
        logging.info(locale)
        message = _('Hello-World')
        logging.info(message)
        self.render("main.html")
Run Code Online (Sandbox Code Playgroud)

在html文件中:

<div id="main">

    {{ _("Hello-World") }}
</div>
Run Code Online (Sandbox Code Playgroud)

导航到网页时,它返回字符串"Hello-World"而不是"Hello World".我不知道出了什么问题.有人可以帮忙吗?

Gre*_*reg 5

一些可能错误的事情,或者可能只是在描述中遗漏了......

带有webapp2转换的默认"域"是"消息",而不是"消息",因此如果您输入的文件实际上是"message.po",则需要更改.

其次,翻译工作在已编译的.mo文件中,而不是.po,所以如果你没有运行编译步骤(pybabel compile -f -d ./locale),你需要这样做.你应该有一个文件locale/en_US/LC_MESSAGES/messages.mo