我在 Ionic 2 项目中使用 nxg-translate。
在我的app.module.ts
,我使用translateHttpLoader
:
...
imports: [
BrowserModule,
HttpModule,
IonicImageViewerModule,
IonicModule.forRoot(MyApp, AppOptions),
IonicAudioModule.forRoot(),
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: createTranslateLoader,
deps: [Http]
}
})
],
...
export function createTranslateLoader(http: Http,) {
return new TranslateHttpLoader(http, 'assets/i18n/', '.json');
}
在我的应用程序中,我必须从外部 zip 下载 lang 文件,因为客户希望有可能在不重新发布应用程序的情况下更改 traductions,并且语言文件包含可能更改的特定元素(地图标记等)
所以我下载并解压缩文件,当我有 lang (= data
) 的 json 内容时,我用方法将它添加到翻译工具中setTranslate
。
this.translate.setTranslation(lang,data);
但是,当我使用 getTranslation 方法检查语言是否正确添加时,我遇到了错误,因为它找不到文件。(http 请求错误)。这很正常,我的文件夹assets/i18n/
是空的,但是使用该setTranslation
方法,我认为我通常应该找到我之前添加的内容?或者我没有按预期使用模块?
我试图在 assets/in18n 文件夹中放置一个空文件(例如 fr.json),看看它是否可以工作,但它不会改变任何东西。
如果我更改 translateHttpLoader 中文件夹的 url,以获得准确下载的 zip 内容文件夹,它可以工作,但问题是我可以更改平台(ios/android)的功能,因为 zip 的文件夹不一样在操作系统的功能。
我的问题是:
- 我可以在我的createTranslateLoader
功能中(或在应用程序初始化后)更改平台功能中的资产文件夹 - setTranslation 方法如何工作:它是否需要文件i18n
夹中的最小文件才能工作?- 你有想法改进我对 ngx-translate 的使用吗?
谢谢 !
大卫