RequireJs實現i18n國際化並打包壓縮(案例)

i18n(其來源是英文單詞 internationalization的首末字符i和n,18爲中間的字符數)是“國際化”的簡稱。在資訊領域,國際化(i18n)指讓產品(出版物,軟件,硬件等)無需做大的改變就能夠適應不同的語言和地區的需要。對程序來說,在不修改內部代碼的情況下,能根據不同語言及地區顯示相應的界面。 在全球化的時代,國際化尤爲重要,因爲產品的潛在用戶可能來自世界的各個角落。通常與i18n相關的還有L10n(“本地化”的簡稱)。

i18n.js下載

下載地址:https://github.com/requirejs/i18n

bower下載命令:

$ bower install requirejs-i18n

目錄結構

打包前:
這裏寫圖片描述

配製信息

build.js

({
    appDir: '../src', //打包目錄
    baseUrl: './js', //require依賴根路徑
    dir: '../build', //打包輸出路徑
    optimize: 'none', //默認是uglify壓縮打包,none表示只打包不壓縮
    mainConfigFile: './config.js', //require配製項文件
    name: 'app' //需要打包的主模塊
})

config.js

requirejs.config({
    baseUrl: './src/js', //require根路徑
    paths: {
        i18n: '../../lib/i18n/i18n', //引入i18n插件路徑
        jquery: '../../lib/jquery/dist/jquery.min', //引入jquery路徑
    },
    config: {
        i18n: {
            locale: 'en' //配製中英文信息,zh:中文,en:英文
        }
    }
});

入口文件config

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>requireJs實現i18n國際化</title>
</head>
<body>
<h3>requireJs實現i18n國際化</h3>
國際化測試如下:
<div id="lang"></div>
<script src="lib/requirejs/require.js" data-main="main.js"></script>
</body>
</html>

main.js

var debug = true; //true表示開發中,false表示打包發佈
if (debug) {
    require(['./config/config', './src/js/app']);
} else {
    //由於有國際化配製信息在config文件內,所以這個依賴不能少
    require(['./config/config','./build/js/app']);
}

開發目錄src

js/app.js

//注意:國際化文件的調用需要i18n插件來預處理,即“i18n! + path”
require(['jquery', 'i18n!./nls/messages'], function ($, i18n) {
    $('#lang').text(i18n.name);
});

js/nls/messages.js

define({
    en: true,
    zh: true
});

js/nls/zh/messages.js

define({
    name: '婁笙悅',
    age: 30,
    sex: '男'
});

js/nls/en/messages.js

define({
    name: 'loushengyue',
    age: 30,
    sex: 'man'
});

r.js打包項目

r.js安裝

$ npm install -g requirejs

r.js打包

在根目錄下執行git命令:

$ r.js -o config/build.js

打包後得到的目錄結構如下:
這裏寫圖片描述

如果想演示打包後的效果,還需要修改main.jsdebugfalse。另外,無論打包前後,都可以通過config.jslocale 配製來調整中英文國際化配製來演示不同效果。

發佈了70 篇原創文章 · 獲贊 97 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章