i18next 不在 Cordova iOS 6.1.0 上翻译

i18next doesn't translate on Cordova iOS 6.1.0

我已经使用 v1.10.x 在 iOS 和 Android 上工作了很多年,但是随着新迁移到 wkwebview i18next(包括 1.11.2)只是 returns 关键。我很好奇是否有人成功地将 i18next 与 Cordova iOS 6.1.0、Cordova 9.0.0 一起使用,以及是否有人可以发现我的错误。

[编辑] 开启调试后,我得到了这个错误,虽然有点无用

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 文件是否可能存在问题,但显式资源也没有转换。此 init 在 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 初始化) );

WKWebView 对文件加载施加了额外的 CORS 限制,事实证明 i18next 使用 XHR 加载翻译文件,因此加载被阻止。通过添加此插件修复,该插件已针对 cordova-ios 6.0

进行了更新

https://github.com/ej-dunne/cordova-plugin-wkwebview-file-xhr

安装这个插件(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" />

这是为我做的:

<plugin name="@ahovakimyan/cordova-plugin-wkwebviewxhrfix" />
<platform name="ios">
 <feature name="CDVWebViewEngine">
        <param name="ios-package" value="CDVWebViewEngine" />
 </feature>
</platform>