无法将区域设置文件从aurelia-i18n添加到dist文件夹进行生产

时间:2018-08-08 08:51:33

标签: aurelia aurelia-i18n

我一直在使用aurelia Framework和aurelia-i18n插件进行翻译。在本地开发人员中一切正常,但是当我构建我的应用程序(npm run build)时,不包括locales文件夹。

这是我的main.js插件设置:

.plugin(PLATFORM.moduleName('aurelia-i18n'), (instance) => {
  let aliases = ['t', 'i18n'];
  TCustomAttribute.configureAliases(aliases);
  instance.i18next.use(Backend); 
  return instance.setup({
    fallbackLng: 'en', 
    whitelist: ['en', 'es'],
    preload: ['en', 'es'], 
    ns: 'translation',
    attributes: aliases, 
    lng: 'en', 
    debug: true, 
    backend: {                                  
      loadPath: 'src/locales/{{lng}}/{{ns}}.json',  
    }
  });
})

在webpack模块规则中,我有这个:

{
  test: /\.json$/,
  loader: 'json', // I have also tried json-loader
  include: ['/locales/en', '/locales/es'],
},

现在,如果我将lang文件包含在webpack模块依赖项中,则这些文件确实会出现在dist文件夹中,但是aurelia-i18n插件无法访问它们,因为它正在locales文件夹中查找文件。

new ModuleDependenciesPlugin(
  {
    "aurelia-i18n": [ 
      { name: "locales/en/translation.json", chunk: "lang-en" },
      { name: "locales/es/translation.json", chunk: "lang-es" }
    ]
  })

有什么想法吗? 预先谢谢你!

1 个答案:

答案 0 :(得分:0)

对于生产版本,我们仅将locales文件夹复制到dist。 这就是webpack.config.js的样子

new CopyWebpackPlugin([
    {
      from: path.join(staticDir, 'locales'),
      to: path.join(outDir, 'locales')
    }
  ])

在项目的根目录中,我们有一个名为static的文件夹,其中包含带有翻译的locales文件夹。 这就是我们在main.js中用来配置i18n的功能。

export function configureI18N(aurelia: Aurelia): void {

  aurelia.use.plugin(PLATFORM.moduleName('aurelia-i18n'), (instance?: any) => {
    // register backend plugin
    instance.i18next.use(Backend);
    const aliases = ['localization-key', 't', 'i18n'];
    // add aliases for 't' attribute
    TCustomAttribute.configureAliases(aliases);
    TParamsCustomAttribute.configureAliases(['localization-key-value-params']);
    // 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: 'en',
      attributes: aliases,
      fallbackLng: 'en',
      lowerCaseLng: true
    });
  });

}