序
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.js
的debug
爲 false
。另外,無論打包前後,都可以通過config.js
的 locale
配製來調整中英文國際化配製來演示不同效果。