You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

SAP UI5项目配置manifest.json的supportedLocales与fallbackLocale后仍出现i18n文件404错误的问题排查

解决SAP UI5中i18n和Messages文件的404错误问题

首先,我们来拆解你遇到的404错误根源:

  • 请求i18n_en_DE.properties是因为你的浏览器当前使用的locale是en_DE(英语-德国区域),UI5会优先尝试匹配这个更具体的复合locale资源文件。虽然你配置了supportedLocales: ["en","de"],但UI5仍会尝试加载en_DE的文件(因为它属于en的子locale),而你没有这个文件,且fallbackLocale设为空,最终导致报错。
  • Messages_en_DE.properties的404则是UI5控件库(如sap.m)尝试加载对应locale的系统消息文件,同样是由locale匹配逻辑触发的。

针对你的场景(仅使用i18n.properties,无其他语言翻译文件),给出以下正确的配置方案:

1. 修正Manifest中的i18n核心配置

你当前设置supportedLocales: ["en","de"]反而会引导UI5尝试加载这两个locale的文件(即便它们是空的),还无法处理en_DE这类复合locale。正确的配置应该让UI5仅依赖你的基础i18n.properties文件:

修改sap.app中的i18n配置:

"sap.app": {
  // 其他原有配置...
  "i18n": {
    "bundleUrl": "i18n/i18n.properties",
    "supportedLocales": [""], // 指定仅支持基础locale(对应i18n.properties)
    "fallbackLocale": ""
  },
  // 其他原有配置...
}

调整i18n模型的配置:

"models": {
  "i18n": {
    "type": "sap.ui.model.resource.ResourceModel",
    "settings": {
      "bundleUrl": "i18n/i18n.properties",
      "supportedLocales": [""],
      "fallbackLocale": "",
      "useRawLocale": true // 强制使用原始locale,不拆分复合locale做匹配
    },
    "preload": true,
    "async": true
  },
  "@i18n": {
    "type": "sap.ui.model.resource.ResourceModel",
    "settings": {
      "bundleUrl": "i18n/i18n.properties",
      "supportedLocales": [""],
      "fallbackLocale": "",
      "useRawLocale": true
    },
    "preload": true,
    "async": true
  },
  // 其他模型配置...
}

2. 配置全局UI5控件库的locale规则

为了消除Messages_en_DE.properties的404,需要在manifest.jsonsap.ui5部分添加全局locale配置,让UI5自带控件库也遵循同样的规则:

"sap.ui5": {
  // 其他原有配置...
  "supportedLocales": [""],
  "fallbackLocale": "",
  // 其他原有配置...
}

3. 可选补充:通过index.html强制锁定语言

如果上述配置仍有残留问题,可以在index.html的SAP UI5 bootstrap脚本中直接指定基础locale,彻底阻断UI5尝试其他locale的行为:

<script id="sap-ui-bootstrap"
  src="https://sapui5.hana.ondemand.com/resources/sap-ui-core.js"
  data-sap-ui-libs="sap.m"
  data-sap-ui-language=""
  data-sap-ui-compatVersion="edge"
  data-sap-ui-theme="sap_horizon">
</script>

关键配置说明

  • supportedLocales: [""]表示仅支持无后缀的基础i18n.properties文件,UI5不会再尝试加载任何带locale后缀的资源文件。
  • useRawLocale: true会让UI5将浏览器的复合locale(如en_DE)当作一个整体处理,不会拆分为语言和地区去匹配资源,从而避免触发对en_DE类文件的请求。
  • 全局sap.ui5配置确保UI5自带控件库也遵循相同的locale规则,不再请求系统消息类的locale文件。

按照以上配置修改后,重新运行应用,那些404错误应该就会消失了。

内容的提问来源于stack exchange,提问作者Geo Joseph

火山引擎 最新活动