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'的?
那么,如何从基于语言配置文件的模板调用?
谢谢
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)
我希望它会有用.
| 归档时间: |
|
| 查看次数: |
3182 次 |
| 最近记录: |