安裝 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 相同的級別 ),因為這是你的應用程式的託管根目錄

在那裡新增你希望支援的每種語言的子資料夾,例如 ende 用於英語和德語。

在每個資料夾的內部建立一個名為 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());
}