Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ionic framework 在爱奥尼亚2中使用ngx翻译:如何添加下载的外部语言文件?动态更改json的文件夹或使用setTranslate?_Ionic Framework_Ionic2_Ngx Translate - Fatal编程技术网

Ionic framework 在爱奥尼亚2中使用ngx翻译:如何添加下载的外部语言文件?动态更改json的文件夹或使用setTranslate?

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({

我在爱奥尼亚2项目中使用nxg翻译

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