Nik*_*ntz 15 python google-app-engine internationalization jinja2
我尝试启用trans标签,我已经制作了测试模板i18n.html:
{% trans %}For sale{% endtrans %}--{{message}}--{{decimal_format}}
根据联机帮助页面,这是我的python代码:
from webapp2_extras import i18n as multilingua
import jinja2
from webapp2_extras.i18n import lazy_gettext as gettext
from webapp2_extras.i18n import lazy_gettext as _
from jinja2 import Environment, FileSystemLoader
jinja_environment = jinja2.Environment(loader=jinja2.FileSystemLoader(os.path.dirname(__file__)),
extensions=['jinja2.ext.i18n'])
# The code below seems wrong since it is django but it was the only way I could make the page load
jinja_environment.install_gettext_translations(django.utils.translation)
class HelloWorldHandler(webapp2.RequestHandler):
def get(self):
# Set the requested locale.
locale = self.request.GET.get('locale', 'pt')
multilingua.get_i18n().set_locale(locale)
message = multilingua.gettext('For sale')
#django.utils.translation.activate('pt')
template = jinja_environment.get_template('templates/i18n.html')
decimal_format = multilingua.I18n(self.request).format_decimal(1000)
self.response.out.write(template.render(message=message, decimal_format=decimal_format))
Run Code Online (Sandbox Code Playgroud)
如果没有django我就无法工作,因此我会问如何丢失django翻译并继续使用webapp2.i18n + jinja.
在一个帖子中也有一个讨论,我不是唯一一个说文档有些不完整或很难找到的人.您能否回答或评论推荐的反式标签工作方式以及为什么必须包含jinja_environment.install_gettext_translations(django.utils.translation)
?
当我尝试删除我对django的使用时,我也失去了webapp2.i18n的功能.我的语言环境文件都在locale/...和conf/locale ..因为第一个是webapp2的默认值,第二个是django翻译的默认值,所以我可以在这里使用一些指导方针来摆脱最佳实践django dependecies并使用webapp2和jinja来渲染我的本地化.
如果有任何帮助,我在尝试删除django时收到了错误消息:
self.response.out.write(template.render(message=message, decimal_format=decimal_format))
File "/media/Lexar/montao/montaoproject/jinja2/environment.py", line 894, in render
return self.environment.handle_exception(exc_info, True)
File "/media/Lexar/montao/montaoproject/templates/i18n.html", line 2, in top-level template code
{{ _('For sale') }}--{{message}}--{{decimal_format}}
UndefinedError: 'gettext' is undefined
Run Code Online (Sandbox Code Playgroud)
谢谢
这是Django + jinja2的一个工作示例:
from jinja2 import PackageLoader, Environment
from django.utils import translation
Run Code Online (Sandbox Code Playgroud)
...
jinja_environment = Environment(loader=PackageLoader('website', 'templates'),
extensions=['jinja2.ext.i18n'])
jinja_environment.install_gettext_translations(translation)
template = jinja_environment.get_template('test.jinja.html')
page_next_app_table = template.render()
Run Code Online (Sandbox Code Playgroud)
...
在test.jinja.html中:
<html>
<b> {{ _( "Traslate This" ) }}:</b>
</html>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13511 次 |
| 最近记录: |