如何在 Aurelia 中支持多个 i18n 端点?
How to support multiple i18n endpoint in Aurelia?
我制作了一个名为 Aurelia-Slickgrid and I'm looking at adding i18n 的插件库来支持多语言环境。我在自己的开发环境中进行了所有设置和工作,但是一旦我将所有内容捆绑在一起,用户将如何使用我创建的语言环境(来自 node_modules/aurelia-slickgrid/locales
)?用户是否必须复制并粘贴我创建的 keys/values?我只有十几把钥匙,没什么大不了的,但我宁愿直接使用它们。
我目前的设置是这样的
import { I18N, TCustomAttribute } from 'aurelia-i18n';
import * as Backend from 'i18next-xhr-backend';
export function configure(aurelia: Aurelia) {
aurelia.use.plugin(PLATFORM.moduleName('aurelia-i18n'), (instance) => {
instance.i18next.use(Backend);
return instance.setup({
backend: {
loadPath: './locales/{{lng}}.json',
},
lng: 'en',
attributes: ['t', 'i18n'],
fallbackLng: 'en',
debug: false
});
});
}
我知道我可以在剧中添加 {{ns}}
,但我认为这对我没有帮助。问题更多,如何添加另一个端点?如果我像这样添加 ns
loadPath: './locales/{{lng}}/{{ns}}.json', // <-- XHR settings for where to get the files from
它仍然来自同一个端点。所以问题实际上是关于如何处理多个后端 endpoints/paths。
通常情况下,您插件的使用者也必须以某种方式捆绑他的应用程序。因此,对 node_modules 的任何引用绝对不是办法,因为如果没有 node_modules 文件夹,那么在访问产品应用程序时这些文件将不可用。
这个场景和差不多。您可以将它们复制到一个明确定义的位置(在您的例子中是 ./locales)并保持结构不变。
您可以使用自定义 ns
放置它们,因为这正是 i18next 支持多个名称空间的原因。所以你得到的例子是这样的:
./locales/en-US/aurelia-slickgrid.json
./locales/de-DE/aurelia-slickgrid.json
...
用户需要确保使用不同的命名空间来使用这些翻译。
标准翻译加载器不支持具有多个端点(参见 here)。原因可能是用例太具体了。
我制作了一个名为 Aurelia-Slickgrid and I'm looking at adding i18n 的插件库来支持多语言环境。我在自己的开发环境中进行了所有设置和工作,但是一旦我将所有内容捆绑在一起,用户将如何使用我创建的语言环境(来自 node_modules/aurelia-slickgrid/locales
)?用户是否必须复制并粘贴我创建的 keys/values?我只有十几把钥匙,没什么大不了的,但我宁愿直接使用它们。
我目前的设置是这样的
import { I18N, TCustomAttribute } from 'aurelia-i18n';
import * as Backend from 'i18next-xhr-backend';
export function configure(aurelia: Aurelia) {
aurelia.use.plugin(PLATFORM.moduleName('aurelia-i18n'), (instance) => {
instance.i18next.use(Backend);
return instance.setup({
backend: {
loadPath: './locales/{{lng}}.json',
},
lng: 'en',
attributes: ['t', 'i18n'],
fallbackLng: 'en',
debug: false
});
});
}
我知道我可以在剧中添加 {{ns}}
,但我认为这对我没有帮助。问题更多,如何添加另一个端点?如果我像这样添加 ns
loadPath: './locales/{{lng}}/{{ns}}.json', // <-- XHR settings for where to get the files from
它仍然来自同一个端点。所以问题实际上是关于如何处理多个后端 endpoints/paths。
通常情况下,您插件的使用者也必须以某种方式捆绑他的应用程序。因此,对 node_modules 的任何引用绝对不是办法,因为如果没有 node_modules 文件夹,那么在访问产品应用程序时这些文件将不可用。
这个场景和ns
放置它们,因为这正是 i18next 支持多个名称空间的原因。所以你得到的例子是这样的:
./locales/en-US/aurelia-slickgrid.json
./locales/de-DE/aurelia-slickgrid.json
...
用户需要确保使用不同的命名空间来使用这些翻译。
标准翻译加载器不支持具有多个端点(参见 here)。原因可能是用例太具体了。