superset國際化

最近由於工作需要研究開源可視化項目superset,由於其國際化做不怎麼好,故而記錄下國際化的過程,本篇本着『授人以魚不如授人以漁』的原則,只敘述國際化的過程及方法,不提供直接的國際化文件。

爲了方便講解,我們假定superset安裝目錄爲PYHTON_LIB=/usr/local/lib/python3.5/site-packages


1、修改PYHTON_LIB/superset-0.17.1-py3.5.egg/superset/config.py文件

注:如不是root用戶,需要修改config.py的文件權限後,再進行修改。

修改點如下:

# ---------------------------------------------------
# Babel config for translations
# ---------------------------------------------------
# Setup default language
BABEL_DEFAULT_LOCALE = 'zh'
# Your application default translation path
BABEL_DEFAULT_FOLDER = 'babel/translations'
# The allowed translation for you app
LANGUAGES = {
    # 'en': {'flag': 'us', 'name': 'English'},
    # 'fr': {'flag': 'fr', 'name': 'French'},
    # 'es':{'flag': 'es', 'name': 'Spain'},
    # 'it':{'flag': 'it', 'name': 'Italy'},
    'zh': {'flag': 'cn', 'name': 'Chinese'},
}

說明:BABEL_DEFAULT_LOCALE設置默認的本地化環境

LANGUAGES:國際化的語言種類,你可以把註釋全放開,這樣就可以根據不同的語言環進行本地化,若要只提供一種語言,那麼就可以放開你要使用的語言,而把其它的語言註釋掉。

2、修改messages.po文件

路徑:PYHTON_LIB/superset-0.17.1-py3.5.egg/superset/translations/zh/LC_MESSAGES

根據views.py視圖中

from flask_babel import gettext as __
from flask_babel import lazy_gettext as _
可以判斷出,只有"__"和"_"開頭的纔可以進行國際化,如
__("Import Dashboards")
_("Column")
然後到messages.po文件中找相應字符串,看是否已經國際化過,若沒有,則在文件的尾部添加
msgid "Column"
msgstr "列"
msgid就是要國際化的字符串,而msgstr則是要翻譯成的語言

3、編譯messages.po文件爲messages.mo
在終端中將目錄切換到PYHTON_LIB/superset-0.17.1-py3.5.egg/superset/目錄下,執行如下命令
pybabel compile -d translations
注意:要對translations目錄及其子目錄有寫入權限

4、重啓superset即可。

ps:以上只是superset的國際化,但類似下面panel之類的漢化,必須要修改appbuilder的漢化目錄才能生效,目錄在PYHTON_LIB/flask_appbuilder/translations/zh。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章