4

我对尝试使用带有烧瓶的 babel 进行语言翻译感到非常困惑。

让我们假设以下。用户偏好西班牙语而不是英语。我有一个标记这一点的变量:

g.user.default_language='sp'

可以说我必须要显示的消息,一个是英语,另一个是西班牙语。“请”与“赞成”

<html>
<h1>INSERT TRANSLATION HERE</h1>
</html>

这是我的基本 babel 配置文件

[python: **.py]
[jinja2: **/templates/**.html]
extensions=jinja2.ext.autoescape,jinja2.ext.with_

那么,如果用户偏好是西班牙语,“请”去哪里以及如何映射到“por fovor”?

那么,如何从基于语言配置文件的模板中调用?

谢谢

4

2 回答 2

6

Flask-Babel是一个非常棒的项目。如果你在 google 上寻找 jinja、i18n 和 Flask,你会发现一些有用的例子。请参阅文档以获取更多信息。在这里,我将提供一个小例子:

1. 创建翻译目录

my_website/translations/pt/LC_MESSAGES/
my_website/translations/en/LC_MESSAGES/

假设您的网站是葡萄牙语和英语的。这是一种手动方式。你最好使用pybabel init command

2. 创建一个名为 messages.po 的文件(这些文件将包含已翻译的字符串):

$ touch my_website/translations/pt/LC_MESSAGES/messages.po 
$ printf "msgid \"Hello world\"\nmsgstr \"Olá mundo\"" > my_website/translations/pt/LC_MESSAGES/messages.po
$ cat my_website/translations/pt/LC_MESSAGES/messages.po

它将创建一个包含以下内容的文件:

msgid "HELLO WORLD"
msgstr "Olá mundo"

3.编译翻译

 $ pybabel compile -d translations

4. 将此行代码添加到烧瓶的主应用程序文件中。

app.config['BABEL_DEFAULT_LOCALE'] = 'pt_BR' #(context locale to load language).

5. 使用_()jinja 模板文件中的函数来查看Olá mundo字符串。

<h1>{{ _('HELLO WORLD') }}</h1>

我希望它会有用。

于 2012-08-15T22:13:14.957 回答
3

您是否按照指南中的说明运行了 pybabel 翻译?http://packages.python.org/Flask-Babel/

并查看http://jinja.pocoo.org/docs/templates/#i18n-in-templateshttp://jinja.pocoo.org/docs/integration/#babel-integration

看来您可以简单地使用_()

于 2012-08-14T15:42:53.893 回答