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

一、支持登陸時,指定語言,或登陸後進行語言切換(param_lang=en)javascript

二、支持 Cookie 存儲語言設置,沒有 Cookie 的狀況使用 Session 存儲,支持移動端html

三、支持 properties 文件、數據庫存儲譯文,方便譯文數據進行管理。前端

四、可翻譯:固定數據(如:頁面標題、標籤、消息提示)、動態數據(如:菜單數據、字典數據等)java

五、中文免寫 zh_CN 譯文,如:text(‘你好’),找不到對應 key 直接原樣輸出 「你好」數據庫

六、支持 kay 和譯文參數,如:text(‘今天第{0}天’, 3),輸出 「今天第3天」後端

語言文件

後端語言文件

固定數據語言

不會變化的文字翻譯,如:某個提示信息,字段 label,列表標題,按鈕文字等,這些譯文須要放到 properties 裏。模塊化

文件目錄結構,支持模塊化分類語言文件結構,以下:編碼

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

例如:msg 模塊 en 譯文配置:翻譯

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

文件內容:code

  • 文件內容採用 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

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

返回:en、zh_CN

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

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

三、獲取語言編碼譯文,支持參數:Global.getText(code, params...)

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

四、在集成 BaseController 和 BaseService 的類裏可直接經過

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

Beetl視圖

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

返回:en、zh_CN

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

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

三、獲取語言編碼譯文,支持參數:${text(code, params...)}

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

JavaScript

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

返回:en、zh_CN

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

例如:text("你好")

三、獲取語言編碼譯文,支持參數: 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/translator/langcode.htm

相關文章
相關標籤/搜索