1. 消息提取
消息提取是将代码中的字符串标记为需要翻译的步骤。在 Tornado 中,可以使用 tornado.locale 模块的 _ 函数来标记字符串。以下是一个简单的例子:
import tornado.locale
from tornado.web import RequestHandler
class MyHandler(RequestHandler):
def get(self):
# 使用 _() 标记需要翻译的字符串
message = self.locale.translate("Hello, world!")
self.write(message)
if __name__ == "__main__":
tornado.locale.load_translations("locales")
app = tornado.web.Application([(r'/', MyHandler)])
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
在上述例子中,self.locale.translate("Hello, world!") 中的字符串被标记为需要翻译的消息。tornado.locale.load_translations("locales") 用于加载翻译文件。
2. 消息本地化
消息本地化是将提取的消息翻译成不同的语言。在 Tornado 中,可以使用 tornado.locale 模块来设置当前的本地化信息。以下是一个简单的例子:
import tornado.locale
from tornado.web import RequestHandler
class MyHandler(RequestHandler):
def get(self):
# 设置当前的本地化信息
self.locale = tornado.locale.get('fr_FR')
message = self.locale.translate("Hello, world!")
self.write(message)
if __name__ == "__main__":
tornado.locale.load_translations("locales")
app = tornado.web.Application([(r'/', MyHandler)])
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
在上述例子中,self.locale = tornado.locale.get('fr_FR') 设置当前的本地化信息为法语('fr_FR')。Tornado 将会在加载的翻译文件中查找对应的翻译消息。
3. 翻译文件
翻译文件是包含翻译消息的文件,其格式通常是 Gettext PO 文件(.po)。你可以使用工具如 gettext 或在线翻译平台生成这些文件。一个简单的 PO 文件可能如下所示:
msgid "Hello, world!"
msgstr "Bonjour le monde !"
这里,msgid 是原始消息,msgstr 是翻译后的消息。
要使用 Tornado 的国际化功能,你需要在应用程序中加载适当的翻译文件,并确保 RequestHandler 实例的 locale 属性正确设置。
请注意,Tornado 的国际化支持是相对基础的,如果需要更高级的功能,你可能需要考虑使用专门的国际化库,如 Babel 等。
转载请注明出处:http://www.zyzy.cn/article/detail/7428/Tornado