在 Ionic 2 中使用 ngx-translate:如何添加下载的外部语言文件? 动态更改 json 的文件夹或使用



我在 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文件,因为客户端希望能够在不重新发布应用程序的情况下更改traduction,并且语言文件包含可能更改的特定元素(地图标记等)。

所以我下载并解压缩文件, 当我有 lang 的 JSON 内容 (=data) 时,我用setTranslate方法将其添加到翻译工具中。

this.translate.setTranslation(lang,data);

但是当我检查语言是否使用 getTranslation 方法很好地添加时,我遇到了错误,因为它找不到该文件。(http 请求错误)。这很正常,我的文件夹assets/i18n/是空的, 但是使用setTranslation方法,我认为我通常应该找到我之前添加的内容 juste ?或者我没有按预期使用该模块?

我试图在 assets/in18n 文件夹中放置一个空文件(例如 fr.json),看看它是否可以工作,但它不会改变任何东西。

如果我在translateHttpLoader中更改文件夹的网址,以精确下载zip内容文件夹,它可以工作,但问题是我将能够更改平台(ios/android)的功能,因为zip文件夹与操作系统的功能不同。

我的问题是:- 我可以在平台功能、createTranslateLoader函数中(或在应用程序初始化后)更改资产文件夹吗? - 如何工作设置翻译方法:它是否需要i18n文件夹中的最小文件才能工作? - 你有改善我对NGX翻译的使用的想法吗?

谢谢!

大卫

//我试图在assets/in18n文件夹中放置一个空文件(例如fr.json),看看它是否可以工作,但它不会改变任何东西。

如果您有相同的体系结构

| src 
| app
| assets
| i18n
| fr.json
| en.json

你能试试下面的代码吗

export function createTranslateLoader(http: Http,) {
return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}

默认情况下,没有可用的加载程序。您可以使用setTranslation手动添加翻译,但最好使用加载器。 您可以编写自己的加载程序,也可以导入现有的加载程序。

相关内容

  • 没有找到相关文章

最新更新