ngx-translate 不适用于 iOS 设备 (Cordova)
ngx-translate not working on iOS device (Cordova)
首先,我已经阅读了之前关于此的话题。 none 的解决方案对我有用。
我有一个基于 Cordova 的应用程序(非离子),部署在 android 和 iOS 上。一切正常,除了我的翻译在 iOS 设备(无论是模拟器还是真实设备)上都不起作用。我正在使用 ngx-translate,它在浏览器或 Android 设备上没有问题。
这是我的设置:
app.module.ts
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: HttpLoaderFactory,
deps: [HttpClient]
}
}),
export function HttpLoaderFactory(http: HttpClient) {
return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}
app.component.ts
import localeSv from '@angular/common/locales/sv';
ngOnInit(): {
this.translate.setDefaultLang('se');
registerLocaleData(localeSv);
}
实施:
<div translate>Click to close</div>
我也尝试过使用其他翻译样式,例如 this.translateService.instant('something'),但它不起作用。
在 运行 cordova build ios 之后,我可以看到我的 se.json 文件位于正确的文件夹中:/assets/i18n/se.json
版本信息:
"@ngx-translate/core": "^11.0.1",
"@ngx-translate/http-loader": "^4.0.0"
- 9.0.0 (cordova-lib@9.0.1)
- ios 5.1.1
- 仅使用 WKWebView
- 允许 config.xml
中的所有 http-intent 和 http-navigation
插件:
- cordova-plugin-customconfigparameters 3.0.0 "Custom Config Parameters"
- cordova-plugin-device 2.0.3 "Device"
- cordova-plugin-geolocation 4.0.2 "Geolocation"
- cordova-plugin-splashscreen 5.0.3 "Splashscreen"
- cordova-plugin-whitelist 1.3.4 "Whitelist"
- cordova-plugin-wkwebview-engine 1.2.1 "Cordova WKWebView Engine"
- onesignal-cordova-plugin 2.9.0 "OneSignal Push Notifications"
- skwas-cordova-plugin-datetimepicker 2.1.1 "DateTime picker"
如果有人知道它可能是什么,我将非常感谢您的帮助。被困在这几天了。
如果有其他人遇到同样的问题。我通过加载我的 json 文件并手动设置翻译解决了这个问题:
导入您的 .json 文件:
import jsonSe from '../assets/i18n/se.json';
使用翻译服务手动设置语言:
let jsonSeData = (jsonSe as any);
this.translate.setTranslation('se', jsonSeData, true);
如果您使用的是 wkwebview (cordova ios 6.0.0),请尝试将此行添加到您的 config.xml
这可以在文档中找到:https://cordova.apache.org/announcements/2020/06/01/cordova-ios-release-6.0.0.html
<preference name="scheme" value="app" />
<preference name="hostname" value="localhost" />
首先,我已经阅读了之前关于此的话题。 none 的解决方案对我有用。
我有一个基于 Cordova 的应用程序(非离子),部署在 android 和 iOS 上。一切正常,除了我的翻译在 iOS 设备(无论是模拟器还是真实设备)上都不起作用。我正在使用 ngx-translate,它在浏览器或 Android 设备上没有问题。
这是我的设置:
app.module.ts
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: HttpLoaderFactory,
deps: [HttpClient]
}
}),
export function HttpLoaderFactory(http: HttpClient) {
return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}
app.component.ts
import localeSv from '@angular/common/locales/sv';
ngOnInit(): {
this.translate.setDefaultLang('se');
registerLocaleData(localeSv);
}
实施:
<div translate>Click to close</div>
我也尝试过使用其他翻译样式,例如 this.translateService.instant('something'),但它不起作用。
在 运行 cordova build ios 之后,我可以看到我的 se.json 文件位于正确的文件夹中:/assets/i18n/se.json
版本信息:
"@ngx-translate/core": "^11.0.1",
"@ngx-translate/http-loader": "^4.0.0"
- 9.0.0 (cordova-lib@9.0.1)
- ios 5.1.1
- 仅使用 WKWebView
- 允许 config.xml 中的所有 http-intent 和 http-navigation
插件:
- cordova-plugin-customconfigparameters 3.0.0 "Custom Config Parameters"
- cordova-plugin-device 2.0.3 "Device"
- cordova-plugin-geolocation 4.0.2 "Geolocation"
- cordova-plugin-splashscreen 5.0.3 "Splashscreen"
- cordova-plugin-whitelist 1.3.4 "Whitelist"
- cordova-plugin-wkwebview-engine 1.2.1 "Cordova WKWebView Engine"
- onesignal-cordova-plugin 2.9.0 "OneSignal Push Notifications"
- skwas-cordova-plugin-datetimepicker 2.1.1 "DateTime picker"
如果有人知道它可能是什么,我将非常感谢您的帮助。被困在这几天了。
如果有其他人遇到同样的问题。我通过加载我的 json 文件并手动设置翻译解决了这个问题:
导入您的 .json 文件:
import jsonSe from '../assets/i18n/se.json';
使用翻译服务手动设置语言:
let jsonSeData = (jsonSe as any);
this.translate.setTranslation('se', jsonSeData, true);
如果您使用的是 wkwebview (cordova ios 6.0.0),请尝试将此行添加到您的 config.xml 这可以在文档中找到:https://cordova.apache.org/announcements/2020/06/01/cordova-ios-release-6.0.0.html
<preference name="scheme" value="app" />
<preference name="hostname" value="localhost" />