我在 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
手动添加翻译,但最好使用加载器。 您可以编写自己的加载程序,也可以导入现有的加载程序。