阅读本章前请先参照Flask-Babel使用简易教程(一)
我们也需要决定我们将要提供翻译的语言种类。支持语言的列表被添加到配置文件中(文件hello.py):
LANGUAGES字典有可用语言代码的键,以及可打印的语言名称作为值。我们使用短的语言代码,但是要指明语言和地域的话,也可能使用长代码。比如,如果我们要支持美国和英国英语的话,我们的字典里面可以有‘en-US’和‘en-GB’。
注意因为Español有一个外来字符,我们必须在 Python 源代码文件顶部中添加coding声明,告诉 Python 解释器我们是使用UTF-8 编码不是 ASCII,因为 ASCII 编码缺少ñ字符。
接下来的一个配置就是我们需要一个Babel用于决定使用哪种语言的函数(文件hello.py):
这个函数有一个localeselector装饰器,它被调用在请求之前为了当产生响应的时候给我们机会选择使用的语言。现在为止我们做的是简单的,我们只要读取浏览器发送的 HTTP 请求中的Accept-Languages头并且从我们支持的语言列表中选择最匹配的语言。这个过程实际上也相当简单,best_match方法为我们做了所有工作。
Accept-Languages头在大多数浏览器上被默认配置成操作系统层的所选择的语言,但是所有的浏览器给我们机会选择其它的语言。用户可以提供语言列表,每一个都有权重。作为例子,下面是复杂的Accept-Languages头:
Accept-Language: da, en-gb;q=0.8, en;q=0.7
上面的头信息表示最佳的语言是丹麦语(默认权重为 1),接着是英国英语(权重是 0.8)以及最后一个选项是通用英语(权重是 0.7)。