尝试使用 NetworkError 设置语言时,ng2-translate 在 iOS 设备上失败(DOM 异常 19):发生网络错误

ng2-translate fails on iOS device when trying to set language with NetworkError (DOM Exception 19): A network error occurred

我一直在试图弄清楚为什么 Globalization.getPreferredLanguage() 只有在 iOS 设备上 运行 时才会失败(而不是在模拟器上 运行 或 Android 设备/模拟器)

            Globalization.getPreferredLanguage().then((property) => {
                let lang = property.value;
                if (lang) {
                    if (lang.startsWith('en')){
                        this.translate.use('en_GB');                            
                    }
                    else if (lang.startsWith('fr')) {
                        this.translate.use('fr_FR');
                    }
                    else {
                        this.translate.use('en_GB');
                    }
                } else {
                    console.log("property.value is null");
                }
            }).catch((reason) => {
                this.translate.use('en_GB');// <-- not only does this NOT WORK, but the reason given is NetworkError (DOM Exception 19):  A network error occurred.                    
            });

我尝试过的:

ionic plugin rm cordova-plugin-globalization && ionic plugin add cordova-plugin-globalization

sudo cordova plugin rm cordova-plugin-globalization && sudo cordova plugin add cordova-plugin-globalization

编辑 1 因此,经过更多调试后,我可以看到失败的是 angular ng2-translate 'use' 函数。在我的 app.module.ts:

import { TranslateLoader, TranslateModule, TranslateStaticLoader } from 'ng2-translate/ng2-translate';
...
export function createTranslateLoader(http: Http) {
    return new TranslateStaticLoader(http, '/assets/i18n', '.json');
}
...
@NgModule({
    declarations: [
        ...
    ],
    imports: [
        ...
        BrowserModule,
        HttpModule,
        TranslateModule.forRoot({
            provide: TranslateLoader,
            useFactory: (createTranslateLoader),
            deps: [Http]
        }),
        ...
    ]
    ...
})
export class AppModule { }

但是在我app.component.ts的时候我打电话给

this.translate.use('en_GB');

它抛出一些异常。我已经检查过,文件确实存在于文件夹中:

/.../platforms/ios/www/assets/i18n

对我来说,Globalization.getPreferredLanguage() 从未得到解决。所以我目前正在使用

this.deviceLang = navigator.language;

此 returns 设备语言及其变体,如 (FR-FR / EN-US)