我已經將本站與Tornado及其模板引擎一起運行,我想要國際化,所以我想使用gettext來幫助我。使用gettext翻譯龍捲風模板的錯誤
因爲我的網站已經在葡萄牙,我message.po(模板)文件在葡萄牙所有MSGID的以及(例如):
xgettext -i *.html -L Python --from-code UTF-8
:
#: base.html:30 base.html:51
msgid "Início"
msgstr ""
它與產生了xgettext
後來我用Poedit來生成翻譯文件en_US.po,稍後將它編譯爲en_US.mo。 存儲在我的翻譯文件夾中:
translation/en_US/LC_MESSAGES/site.mo
到目前爲止,這麼好。
我創建了一個非常簡單的RequestHandler,它將呈現並返回已翻譯的網站。
import os
import logging
from tornado.web import RequestHandler
import tornado.locale as locale
LOG = logging.getLogger(__name__)
class SiteHandler(RequestHandler):
def initialize(self):
locale.load_gettext_translations(os.path.join(os.path.dirname(__file__), '../translations'), "site")
def get(self, page):
LOG.debug("PAGE REQUESTED: %s", page)
self.render("site/%s.html" %page)
據我知道,應該很好地工作,但不知何故,我遇到了一些問題:
1 - 我該如何告訴龍捲風,我的模板都有其在葡萄牙文本所以不會去找一個我沒有的地點?
2 - 使用en_US語言環境詢問網站時,它加載正常,但是當Tornado要翻譯時,它會引發編碼異常。
TypeError: not all arguments converted during string formatting
ERROR:views.site:Could not load template
Traceback (most recent call last):
File "/Users/ademarizu/Dev/git/new_plugin/site/src/main/py/views/site.py", line 20, in get
self.render("site/%s.html" %page)
File "/Users/ademarizu/Dev/virtualEnvs/execute/lib/python2.7/site-packages/tornado/web.py", line 664, in render
html = self.render_string(template_name, **kwargs)
File "/Users/ademarizu/Dev/virtualEnvs/execute/lib/python2.7/site-packages/tornado/web.py", line 771, in render_string
return t.generate(**namespace)
File "/Users/ademarizu/Dev/virtualEnvs/execute/lib/python2.7/site-packages/tornado/template.py", line 278, in generate
return execute()
File "site/home_html.generated.py", line 11, in _tt_execute
_tt_tmp = _("Início") # site/base.html:30
File "/Users/ademarizu/Dev/virtualEnvs/execute/lib/python2.7/site-packages/tornado/locale.py", line 446, in translate
return self.gettext(message)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/gettext.py", line 406, in ugettext
return self._fallback.ugettext(message)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/gettext.py", line 407, in ugettext
return unicode(message)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 2: ordinal not in range(128)
任何幫助?
啊,我正在運行python 2.7 btw!
非常感謝您的幫助!你是一個拯救生命的人! = d – ademarizu