安裝 Aurelia-I18N 外掛
為了將官方 I18N 外掛新增到 CLI 專案中,我們需要按照以下步驟進行安裝。
首先,你要通過 npm 安裝外掛:
npm install aurelia-i18n
由於 Aurelia-I18N 由 i18next 支援,你應該安裝它和你選擇的後端外掛。作為一個例子,我們將利用 i18next-xhr-backend:
npm install i18next i18next-xhr-backend
之後,我們需要告訴 CLI 應用程式有關新的依賴項。為此,我們將開啟檔案 aurelia_project / aurelia.json 並向下滾動到名為 dependencies 的部分。在那裡新增以下三個條目:
{
"name": "i18next",
"path": "../node_modules/i18next/dist/umd",
"main": "i18next"
},
{
"name": "aurelia-i18n",
"path": "../node_modules/aurelia-i18n/dist/amd",
"main": "aurelia-i18n"
},
{
"name": "i18next-xhr-backend",
"path": "../node_modules/i18next-xhr-backend/dist/umd",
"main": "i18nextXHRBackend"
}
很棒,現在按照官方的 Aurelia-I18N 指南, 我們在你的應用程式的根目錄中建立一個名為 locales 的資料夾。
你必須將資料夾放入根目錄(與 src 相同的級別 ),因為這是你的應用程式的託管根目錄
在那裡新增你希望支援的每種語言的子資料夾,例如 en 和 de 用於英語和德語。
在每個資料夾的內部建立一個名為 translation.json 的檔案,其中包含你的翻譯鍵和值。請按照官方指南獲取詳細資訊。
最後但並非最不重要的是,是時候將應用程式中的外掛連線起來了。因此,請轉到 src / main.js 檔案並按如下所示進行配置。
/**********************************************/
/ add the necessary imports /
/**********************************************/
import environment from './environment';
import Backend from 'i18next-xhr-backend';
//Configure Bluebird Promises.
//Note: You may want to use environment-specific configuration.
Promise.config({
warnings: {
wForgottenReturn: false
}
});
export function configure(aurelia) {
aurelia.use
.standardConfiguration()
.feature('resources');
if (environment.debug) {
aurelia.use.developmentLogging();
}
if (environment.testing) {
aurelia.use.plugin('aurelia-testing');
}
/**********************************************/
/ register the plugin /
/**********************************************/
aurelia.use.plugin('aurelia-i18n', (instance) => {
// register backend plugin
instance.i18next.use(Backend);
// adapt options to your needs (see http://i18next.com/docs/options/)
// make sure to return the promise of the setup method, in order to guarantee proper loading
return instance.setup({
backend: { // <-- configure backend settings
loadPath: './locales/{{lng}}/{{ns}}.json', // <-- XHR settings for where to get the files from
},
lng : 'de',
attributes : ['t','i18n'],
fallbackLng : 'en',
debug : false
});
});
aurelia.start().then(() => aurelia.setRoot());
}