首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NG2-在iOS设备上尝试用NetworkError设置语言(DOM异常19)时,翻译失败:发生网络错误

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

Stack Overflow用户
提问于 2016-11-10 12:44:11
回答 1查看 263关注 0票数 0

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

代码语言:javascript
复制
            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.                    
            });

我试过的是:

  • 删除和添加带有离子和cordova指令的全球化插件:

离子插件rm cordova插件全球化&离子插件添加cordova插件全球化 sudo cordova插件rm cordova插件-全球化& sudo cordova插件添加cordova插件-全球化

编辑1,因此,经过更多的调试,我可以看到,它的角度NG2-翻译‘使用’功能是失败的。在我的app.module.ts:

代码语言:javascript
复制
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里当我打电话

代码语言:javascript
复制
this.translate.use('en_GB');

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-11 09:21:47

对我来说,Globalization.getPreferredLanguage()从未被解析过。所以我现在用

代码语言:javascript
复制
this.deviceLang = navigator.language;

这将返回设备语言及其变体(FR/ EN-US)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40527960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档