[英]Python, flask, babel- message, and e.g. Spanish - How to
我对尝试使用带烧瓶的 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”?
那么,如何从基于语言配置文件的模板调用?
谢谢
Flask-Babel是一个非常棒的项目。 如果你在谷歌上寻找 jinja、i18n 和 Flask,你会发现一些有用的例子。 请参阅文档了解更多信息。 在这里,我将提供一个小例子:
1. 创建翻译目录:
my_website/translations/pt/LC_MESSAGES/
my_website/translations/en/LC_MESSAGES/
假设您的网站是葡萄牙语和英语。 这是一种手动方式来做到这一点。 你最好使用pybabel init
命令。
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>
我希望它会很有用。
您是否按照指南中的说明运行了 pybabel 翻译? http://packages.python.org/Flask-Babel/
并参见http://jinja.pocoo.org/docs/templates/#i18n-in-templates和http://jinja.pocoo.org/docs/integration/#babel-integration
看来你可以简单地使用_()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.