Ionic framework 在爱奥尼亚2中使用ngx翻译:如何添加下载的外部语言文件?动态更改json的文件夹或使用setTranslate?
我在爱奥尼亚2项目中使用nxg翻译 在我的Ionic framework 在爱奥尼亚2中使用ngx翻译:如何添加下载的外部语言文件?动态更改json的文件夹或使用setTranslate?,ionic-framework,ionic2,ngx-translate,Ionic Framework,Ionic2,Ngx Translate,我在爱奥尼亚2项目中使用nxg翻译 在我的app.module.ts中,我使用translateHttpLoader: ... imports: [ BrowserModule, HttpModule, IonicImageViewerModule, IonicModule.forRoot(MyApp, AppOptions), IonicAudioModule.forRoot(), TranslateModule.forRoot({
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文件,因为客户端希望能够在不重新发布应用程序的情况下更改交易,并且语言文件包含可能更改的特定元素(地图标记等)
所以我下载并解压文件,
当我拥有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翻译的想法吗
谢谢
David//我试图将一个空文件放在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
手动添加翻译,但最好使用加载程序。
您可以编写自己的加载程序,也可以导入现有的加载程序