閱讀本章前請(qǐng)先參照Flask-Babel使用簡(jiǎn)易教程(一)
我們也需要決定我們將要提供翻譯的語(yǔ)言種類。支持語(yǔ)言的列表被添加到配置文件中(文件hello.py):

LANGUAGES字典有可用語(yǔ)言代碼的鍵,以及可打印的語(yǔ)言名稱作為值。我們使用短的語(yǔ)言代碼,但是要指明語(yǔ)言和地域的話,也可能使用長(zhǎng)代碼。比如,如果我們要支持美國(guó)和英國(guó)英語(yǔ)的話,我們的字典里面可以有‘en-US’和‘en-GB’。
注意因?yàn)?i>Espa?ol有一個(gè)外來(lái)字符,我們必須在 Python 源代碼文件頂部中添加coding聲明,告訴 Python 解釋器我們是使用UTF-8 編碼不是 ASCII,因?yàn)?ASCII 編碼缺少?字符。
接下來(lái)的一個(gè)配置就是我們需要一個(gè)Babel用于決定使用哪種語(yǔ)言的函數(shù)(文件hello.py):

這個(gè)函數(shù)有一個(gè)localeselector裝飾器,它被調(diào)用在請(qǐng)求之前為了當(dāng)產(chǎn)生響應(yīng)的時(shí)候給我們機(jī)會(huì)選擇使用的語(yǔ)言。現(xiàn)在為止我們做的是簡(jiǎn)單的,我們只要讀取瀏覽器發(fā)送的 HTTP 請(qǐng)求中的Accept-Languages頭并且從我們支持的語(yǔ)言列表中選擇最匹配的語(yǔ)言。這個(gè)過(guò)程實(shí)際上也相當(dāng)簡(jiǎn)單,best_match方法為我們做了所有工作。
Accept-Languages頭在大多數(shù)瀏覽器上被默認(rèn)配置成操作系統(tǒng)層的所選擇的語(yǔ)言,但是所有的瀏覽器給我們機(jī)會(huì)選擇其它的語(yǔ)言。用戶可以提供語(yǔ)言列表,每一個(gè)都有權(quán)重。作為例子,下面是復(fù)雜的Accept-Languages頭:
Accept-Language: da, en-gb;q=0.8, en;q=0.7
上面的頭信息表示最佳的語(yǔ)言是丹麥語(yǔ)(默認(rèn)權(quán)重為 1),接著是英國(guó)英語(yǔ)(權(quán)重是 0.8)以及最后一個(gè)選項(xiàng)是通用英語(yǔ)(權(quán)重是 0.7)。