程式翻譯

字串翻譯方法

本平台客製套件支援多語系翻譯,定義字串翻譯的方式簡述如下。

備註

本節僅簡要記述,詳細作法請直接參考 String internationalization

  1. Jinja2 模板內字串翻譯

    一般為以下形式。單引號內的字元(Hello World!)即可被翻譯為其他語系。

    {% set hello = _('Hello World!') %}
    
  2. Python 程式內字串翻譯

    一般為以下形式。雙引號(或單引號)內的字元(This paragraph is translatable.)即可被翻譯為其他語系。

    my_string = _("This paragraph is translatable.")
    
  3. JavaScript 程式內字串翻譯

    一般為以下形式。雙引號(或單引號)內的字元(Something that should be translated)即可被翻譯為其他語系。

    this._('Something that should be translated')
    

產生與編譯字串翻譯檔案

在定義好可翻譯字串後,需產生對應語系之翻譯檔案方能生效。

重要

執行以下指令時,請確認您位於 Python 虛擬環境中,否則安裝作業可能會失敗。當虛擬環境執行時,命令提示字元(shell prompt)會有類似以下前綴:

(default) $ _

您可隨時執行以下指令以返回虛擬環境:

. /usr/lib/ckan/default/bin/activate

重要

執行以下指令時,請確定您位於客製套件根目錄:

cd /usr/lib/ckan/default/src/ckanext-data-depositario
  1. 擷取所有待翻譯字串

    python setup.py extract_messages
    
  2. 建立個別語系待翻譯字串

    備註

    以下均以台灣繁體中文為例說明。

    另因本語系已存在,故使用 update_catalog 參數以保留已翻譯字串。若欲新增語系,請改為 init_catalog。

    python setup.py update_catalog -l zh_Hant_TW
    
  3. 開啟以下檔案並開始翻譯字串(msgstr 部分)

    vi ckanext/data_depositario/i18n/zh_Hant_TW/LC_MESSAGES/ckanext-data_depositario.po
    
  4. 編譯已翻譯字串

    python setup.py compile_catalog
    
  5. 重新啟動 CKAN 以使更改生效

    備註

    此處假設您已完成 CKAN 部署工作,若尚未完成請先參考 佈署至伺服器 完成部署。

    sudo supervisorctl restart ckan-uwsgi:*