Mezzanine i18n Best Practice (對我們而言最佳的解決方案) |
目標:
使用者進入網站時, 判斷最合適語言, 利用 JavaScript (AngularJS) 函數將所需要翻譯的文字進行替換
首先先在 settings.py 裡面新增一個 Middleware:
接著強迫每一個頁面都必須要有 lang 這個 query parameter (除了 static files 和 admin 等):
新增一個 JavaScript 函數 _(key) 讓需要翻譯的文字透過這個函數進行轉換:
最後再加上翻譯檔與 template 的檔案, i18n 的機制的完工了 (備註):
不過這當中我們還有利用一些技巧及為了內部翻譯流程順暢而蓋的輪子(可能算是大車子了...)沒有寫出來, 如果有人有興趣, 說不定可以有機會請搭建車子的強者我同事出來現身說法一下。
備註:由於 Python 蠻多 template engine (樣板引擎) 所預設用的渲染 (render 或叫插入 interpolate) 符號跟 AngularJS 一樣, 所以必須要修改 AngularJS 或是 Python 兩者其一的預設渲染符號。網誌中的範例是如下在 AngularJS 的 config 階段修改 AngularJS 的渲染(插入)符號。
留言
張貼留言