繁体   English   中英

Python、flask、babel-消息和例如西班牙语 - 如何

[英]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-templateshttp://jinja.pocoo.org/docs/integration/#babel-integration

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM