【发布时间】:2017-05-29 20:03:29
【问题描述】:
我在 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 (=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 的使用吗?
谢谢!
大卫
【问题讨论】:
标签: ionic-framework ionic2 ngx-translate