我一直在试图弄清楚为什么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.
});我试过的是:
离子插件rm cordova插件全球化&离子插件添加cordova插件全球化 sudo cordova插件rm cordova插件-全球化& sudo cordova插件添加cordova插件-全球化
编辑1,因此,经过更多的调试,我可以看到,它的角度NG2-翻译‘使用’功能是失败的。在我的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
发布于 2016-11-11 09:21:47
对我来说,Globalization.getPreferredLanguage()从未被解析过。所以我现在用
this.deviceLang = navigator.language;这将返回设备语言及其变体(FR/ EN-US)。
https://stackoverflow.com/questions/40527960
复制相似问题