1. 程式人生 > >JeeSite 4.x 國際化(i18n)、多語言、本地化

JeeSite 4.x 國際化(i18n)、多語言、本地化

1、支援登入時,指定語言,或登入後進行語言切換(param_lang=en)

2、支援 Cookie 儲存語言設定,沒有 Cookie 的情況使用 Session 儲存,支援移動端

3、支援 properties 檔案、資料庫儲存譯文,方便譯文資料進行管理。

4、可翻譯:固定資料(如:頁面標題、標籤、訊息提示)、動態資料(如:選單資料、字典資料等)

5、中文免寫 zh_CN 譯文,如:text(‘你好’),找不到對應 key 直接原樣輸出 “你好”

6、支援 kay 和譯文引數,如:text(‘今天第{0}天’, 3),輸出 “今天第3天”

語言檔案

後端語言檔案

固定資料語言

不會變化的文字翻譯,如:某個提示資訊,欄位 label,列表標題,按鈕文字等,這些譯文需要放到 properties 裡。

檔案目錄結構,支援模組化分類語言檔案結構,如下:

/src/main/resources/messages/模組編碼/i18n_語言編碼.properties

例如:msg 模組 en 譯文配置:

/src/main/resources/messages/msg/i18n_en.properties

檔案內容:

  • 檔案內容採用 key=value 方式儲存,如:你好=Hello
  • 若Key中包含空格,可使用“\”轉義,如:提\ 交=Submit
  • 帶引數的譯文,如:今天第\ {0}\ 天。= Today is the {0} day.

在系統字典中維護新增加的語言:sys_lang_type,字典編碼為語言編碼;

動態資料語言

業務或管理員可通過資料庫進行修改或配置的一些文字譯文,如選單名稱,字典名稱,字典值等。

這些可通過 system 賬號登入,進入選單 “系統管理 -> 系統設定 -> 國際化管理” 新增譯文。

前端語言檔案

根據需求自己擴充套件語言檔案,例如:

<script src="${ctxStatic}/modules/i18n/i18n_${lang()}.js" ></script>

舉例內容如下:

window.jeesiteMessage = $.extend({}, window.jeesiteMessage, {
    '你好' : 'Hello',
    '今天第 {0} 天' : ' Today is the {0} day.'
});

語言呼叫方法

Java

1、獲取語言名稱:Global.getLang()

返回:en、zh_CN

2、獲取語言編碼譯文:Global.getText(code)

例如:Global.getText("你好")

3、獲取語言編碼譯文,支援引數:Global.getText(code, params...)

例如:Global.getText("今天第{0}天", 3)

4、在整合 BaseController 和 BaseService 的類裡可直接通過

例如:text(code) 或 text(code, params...)

Beetl檢視

1、獲取語言名稱:${lang()}

返回:en、zh_CN

2、獲取語言編碼譯文:${text(code)}

例如:${text("你好")}

3、獲取語言編碼譯文,支援引數:${text(code, params...)}

例如:${text("今天第{0}天", 3)}

JavaScript

1、獲取語言名稱:window.lang || 'zh_CN'

返回:en、zh_CN

2、獲取語言編碼譯文:text(code)

例如:text("你好")

3、獲取語言編碼譯文,支援引數: text(code, params...)

例如:text("今天第{0}天", 3)

常用語言編碼

java.util.Locale :

public static final Locale ENGLISH = createConstant("en", "");
public static final Locale FRENCH = createConstant("fr", "");
public static final Locale GERMAN = createConstant("de", "");
public static final Locale ITALIAN = createConstant("it", "");
public static final Locale JAPANESE = createConstant("ja", "");
public static final Locale KOREAN = createConstant("ko", "");
public static final Locale CHINESE = createConstant("zh", "");
public static final Locale SIMPLIFIED_CHINESE = createConstant("zh", "CN");
public static final Locale TRADITIONAL_CHINESE = createConstant("zh", "TW");
public static final Locale FRANCE = createConstant("fr", "FR");
public static final Locale GERMANY = createConstant("de", "DE");
public static final Locale ITALY = createConstant("it", "IT");
public static final Locale JAPAN = createConstant("ja", "JP");
public static final Locale KOREA = createConstant("ko", "KR");
public static final Locale CHINA = SIMPLIFIED_CHINESE;
public static final Locale PRC = SIMPLIFIED_CHINESE;
public static final Locale TAIWAN = TRADITIONAL_CHINESE;
public static final Locale UK = createConstant("en", "GB");
public static final Locale US = createConstant("en", "US");
public static final Locale CANADA = createConstant("en", "CA");
public static final Locale CANADA_FRENCH = createConstant("fr", "CA");

語言程式碼表:http://www.lingoes.cn/zh/transl