Python,flask,babel- message,以及例如西班牙语 - 如何

Tam*_*mpa 4 python babel flask

我完全混淆了尝试使用带烧瓶的babel进行语言翻译.

让我们假设如下.用户优先考虑西班牙语而不是英语.我有一个标记为的变量:

g.user.default_language='sp'
Run Code Online (Sandbox Code Playgroud)

让我说我要留言,一个是英文,另一个是西班牙语,我想展示.'Please'vs'raf fovor'

<html>
<h1>INSERT TRANSLATION HERE</h1>
</html>
Run Code Online (Sandbox Code Playgroud)

这是我的基本babel配置文件

[python: **.py]
[jinja2: **/templates/**.html]
extensions=jinja2.ext.autoescape,jinja2.ext.with_
Run Code Online (Sandbox Code Playgroud)

那么,'Please'去哪里,如果用户pref是西班牙语,它是如何映射到'por fovor'的?

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

谢谢

Jon*_*tes 6

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

1.创建翻译目录:

my_website/translations/pt/LC_MESSAGES/
my_website/translations/en/LC_MESSAGES/
Run Code Online (Sandbox Code Playgroud)

假设您的网站是葡萄牙语和英语.这是一种手动方式.你最好使用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
Run Code Online (Sandbox Code Playgroud)

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

msgid "HELLO WORLD"
msgstr "Olá mundo"
Run Code Online (Sandbox Code Playgroud)

3.编译翻译

 $ pybabel compile -d translations
Run Code Online (Sandbox Code Playgroud)

4.在烧瓶的主app文件中添加了行代码.

app.config['BABEL_DEFAULT_LOCALE'] = 'pt_BR' #(context locale to load language).
Run Code Online (Sandbox Code Playgroud)

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

<h1>{{ _('HELLO WORLD') }}</h1>
Run Code Online (Sandbox Code Playgroud)

我希望它会有用.