【发布时间】:2018-07-19 05:35:58
【问题描述】:
我有一个 ionic 3 项目,我想使用 ngx translate。 它可以在浏览器和 iOS 模拟器中运行,但不能在真实设备上运行(在 iPhone SE、iOS 11.1 上测试)。
app.module.ts
import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
import { HttpClient, HttpClientModule } from '@angular/common/http';
export function HttpLoaderFactory (http: HttpClient) {
return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}
@NgModule({
[...],
imports: [
[...]
HttpClientModule,
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: (HttpLoaderFactory),
deps: [HttpClient]
}
})
],
[...]
})
export class AppModule { }
我的文件在这里:
src/assets/i18n/DE.json
src/assets/i18n/EN.json
我是这样翻译的:
<ion-title translate>
{{ 'LOGIN.HEADER' | translate }}
</ion-title>
有人知道为什么不能在设备上翻译吗?
【问题讨论】:
-
你在用
WKWebView吗? -
@sebaferreras:我正在使用 Ionic WebView。我认为是 WKWebView。
-
我尝试通过将
<preference name="CordovaWebViewEngine" value="CDVUIWebViewEngine" />添加到我的config.xml 来将其更改为UIWebView,但它没有解决问题。 -
请查看 this comment 并告诉我是否可以解决问题。顺便说一句,您应该保留
WkWebView,因为UiWebView将被弃用 -
感谢您的回答。不幸的是,我得到了
.map在类型Observable<string>上不存在的错误。所以,我无法真正测试它。我试图重写它但没有成功。然后我只写了return this.http.get(./assets/i18n/EN.json);从这一刻起它就可以工作了,而且它也适用于我的旧实现(+我将语言文件名更改为小写(en.json,de.json)我之前已经尝试过很多次了)。所以,我真的不知道为什么,但它现在似乎工作。感谢您的帮助!
标签: ios ionic-framework ionic3 ngx-translate