使用翻译

日期格式化之外的另一个部分就是翻译。Flask 使用 gettext 和 Babel 配合一起实现翻译的功能。gettext 的作用就是你可以标记某些字符串作为翻译的内容并且一个工具会从应用中挑选这些,接着把它们放入一个单独的文件为你来翻译。在运行的时候原始的字符串(应该是英语)将会被你选择的语言替换掉。

有两个函数可以用来完成翻译:gettext()ngettext()。第一个函数用于翻译含有 0 个或者 1 个字符串参数的字符串,第二个参数用于翻译含有多个字符串参数的字符串。这里有些示例:

  1. from flask.ext.babel import gettext, ngettext
  2. gettext(u'A simple string')
  3. gettext(u'Value: %(value)s', value=42)
  4. ngettext(u'%(num)s Apple', u'%(num)s Apples', number_of_apples)

另外如果你希望在你的应用中使用常量字符串并且在请求之外定义它们的话,你可以使用一个“懒惰”字符串。“懒惰”字符串直到它们实际被使用的时候才会计算。为了使用一个“懒惰”字符串,请使用 lazy_gettext() 函数:

  1. from flask.ext.babel import lazy_gettext
  2. class MyForm(formlibrary.FormBase):
  3. success_message = lazy_gettext(u'The form was successfully saved.')

Flask-Babel 如何找到翻译?首先你必须要生成翻译。这里是你如何做到这一点: