i18next 不能在 Cordova iOS 6.1.0 上翻译
Posted
技术标签:
【中文标题】i18next 不能在 Cordova iOS 6.1.0 上翻译【英文标题】:i18next doesn't translate on Cordova iOS 6.1.0 【发布时间】:2020-07-15 16:31:42 【问题描述】:我已经在 ios 和 android 上使用 v1.10.x 多年,但新迁移到 wkwebview i18next(包括 1.11.2)只会返回密钥。我很好奇是否有人在 Cordova iOS 6.1.0、Cordova 9.0.0 中成功使用 i18next,以及是否有人能发现我的错误。
[编辑] 开启调试后,我得到了这个错误,虽然它有点无用
2020-07-15 11:08:29.649177-0700 myapp[15438:5134539] error when loading /src/locales/en/translation.json
[/编辑]
这是我的 i18next 初始化代码,min 包由 index.html 加载。我将资源对象添加到 init 选项中,以查看我的 translation.json 文件是否存在问题,但显式资源也没有翻译。此初始化在 Cordova Android 9.0 上运行良好。
/* ******************* internationalization and go **************** */
// initialize i18n, launch react in the callback so we're able to localize
i18n.init(
fallbackLng: "en",
debug: true,
resources:
en:
translation:
"clf_js_Username": "Who ARE you?"
,
function(err, t)
if (typeof err !== "undefined")
console.log("LH.iLE - initialization returned error >" + err + "<");
setTimeout(() =>
console.log(
"********** i.i18init is complete - starting react **********"
);
// setup the action groups for 'special' notifications
// addKatzerActionGroups();
//************** launch React+Redux **********
(blah blah blah——超时是一个神奇的数字 1000ms 允许 i18n 初始化) );
【问题讨论】:
【参考方案1】:安装这个插件(cordova-ios 6+)
cordova plugin add https://github.com/globules-io/cordova-plugin-ios-xhr
然后设置
<preference name="AllowUntrustedCerts" value="true" />
<preference name="InterceptRemoteRequests" value="all" />
<preference name="allowFileAccessFromFileURLs" value="true" />
<preference name="allowUniversalAccessFromFileURLs" value="true" />
【讨论】:
我没有充分理由使用这个插件,只是它在 config.xml 中公开了选项。好像可以了,谢谢!【参考方案2】:WKWebView 对文件加载施加了额外的 CORS 限制,结果 i18next 使用 XHR 加载翻译文件,因此加载被阻止。通过添加此插件进行修复,该插件已针对 cordova-ios 6.0 进行了更新
https://github.com/ej-dunne/cordova-plugin-wkwebview-file-xhr
【讨论】:
【参考方案3】:这是为我做的:
<plugin name="@ahovakimyan/cordova-plugin-wkwebviewxhrfix" />
<platform name="ios">
<feature name="CDVWebViewEngine">
<param name="ios-package" value="CDVWebViewEngine" />
</feature>
</platform>
【讨论】:
以上是关于i18next 不能在 Cordova iOS 6.1.0 上翻译的主要内容,如果未能解决你的问题,请参考以下文章