我一直在使用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" }
]
})
有什么想法吗? 预先谢谢你!
答案 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
});
});
}