部署到Fiori启动板后,片段调用错误的i18n路径

2020-09-08 00:32发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


尊敬的专家,

我们开发了一个具有一个主视图和两个片段的定制SAPUI5-App。 我们有三个用于不同语言的i18n文件。

如果我在本地WebIDE中测试i18n转换,一切都很好。 但是,在将我们的应用程序部署到Fiori启动板后,加载i18n文件时发生了错误。

如果我在启动板中打开应用程序,则主视图将加载正确的i18n文件,并且标签会被翻译。 但是,如果我打开这些片段,F12会说它无法加载i18n文件。 当我分析网络请求时,我注意到,主视图正在调用i18n文件的正确路径,但是片段正在调用另一条错误的路径,然后出现404错误(未找到)。

我尝试了很多事情:

  • 为每个片段设置i18n模型
  • 在片段的创建和调用方法中使用功能" addDependent"
  • 检查manifest.json和component.js中错误的资源或路径
  • 检查bsp应用程序的映射文件

没有任何效果。 再次:它可以在我的本地测试环境中使用。

在启动板内部,主视图调用正确路径:https://XXX/sap/bc/ui5_ui5/sap/zindivsel_nmf/〜A511A000B4A95D2839F3719D216182DE〜5/i18n/i18n_it.properties

在启动板中,片段正在调用错误路径:https://XXX/sap/bc/ui5_ui5/ui2/ushell/shells/abap/i18n/i18n_it.properties

有人知道为什么会发生这种情况,我该如何解决?

此致

蒂姆

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


尊敬的专家,

我们开发了一个具有一个主视图和两个片段的定制SAPUI5-App。 我们有三个用于不同语言的i18n文件。

如果我在本地WebIDE中测试i18n转换,一切都很好。 但是,在将我们的应用程序部署到Fiori启动板后,加载i18n文件时发生了错误。

如果我在启动板中打开应用程序,则主视图将加载正确的i18n文件,并且标签会被翻译。 但是,如果我打开这些片段,F12会说它无法加载i18n文件。 当我分析网络请求时,我注意到,主视图正在调用i18n文件的正确路径,但是片段正在调用另一条错误的路径,然后出现404错误(未找到)。

我尝试了很多事情:

  • 为每个片段设置i18n模型
  • 在片段的创建和调用方法中使用功能" addDependent"
  • 检查manifest.json和component.js中错误的资源或路径
  • 检查bsp应用程序的映射文件

没有任何效果。 再次:它可以在我的本地测试环境中使用。

在启动板内部,主视图调用正确路径:https://XXX/sap/bc/ui5_ui5/sap/zindivsel_nmf/〜A511A000B4A95D2839F3719D216182DE〜5/i18n/i18n_it.properties

在启动板中,片段正在调用错误路径:https://XXX/sap/bc/ui5_ui5/ui2/ushell/shells/abap/i18n/i18n_it.properties

有人知道为什么会发生这种情况,我该如何解决?

此致

蒂姆

付费偷看设置
发送
7条回答
hongfeng1314
1楼 · 2020-09-08 00:43.采纳回答

尊敬的专家,

非常感谢您的想法和帮助。 我现在解决了这个问题。

在我的情况下,解决方案是,如果我单击"过滤器/排序"按钮,则必须将" addDependent"语句不放置在" createViewSettingsDialog"方法中,而不是按钮事件方法中。

所以最终只有一行代码可以解决问题:)

以下是我针对所有存在相同问题的代码:

//创建对话框
 createViewSettingsDialog:function(sDialogFragmentName){
 var oDialog = this._mViewSettingsDialogs [sDialogFragmentName];
 如果(!oDialog){
 oDialog = sap.ui.xmlfragment(sDialogFragmentName,this);
 this._mViewSettingsDialogs [sDialogFragmentName] = oDialog;
 }
 返回oDialog;
 },


//排序的按钮事件
 handleSortButtonPressed:function(){
 this.getView()。addDependent(this.createViewSettingsDialog(" zindivsel_nmf.view.SortDialog"));;
 this.createViewSettingsDialog(" zindivsel_nmf.view.SortDialog")。open();
 },
 
闻人可可
2楼-- · 2020-09-08 00:59

为什么不将模型放在manifest.json中?

追夢秋陽
3楼-- · 2020-09-08 00:55

能否请您在附加片段的地方显示代码。 您也许可以从中使用答案。 https://stackoverflow.com/questions/25636637/localizationi18n-in-sapui5-for-fragment-xml-file-in-not-appearing

zhangjiyang1323
4楼-- · 2020-09-08 00:39

很棒的Tim

蒂姆,您好,您可以尝试使用以下路径吗?

 var rootPath = jQuery.sap.getModulePath(" <模块路径>");
         var i18nModel = new sap.ui.model.resource.ResourceModel({
             bundleUrl:[rootPath,'']。join("/")
         });
         this.setModel(i18nModel," i18n"); 

此致

Karthik Arjun

哎,真难
6楼-- · 2020-09-08 00:39

嗨雅各布,

感谢您的回答。 我将我的编码附加到屏幕快照的屏幕截图中,包括应用程序的结构,以使您更好地了解自己在做什么。

屏幕截图的说明:

  1. 我有一个Controller负责我的MainView和片段
  2. 我使用ViewSettingsDialog为我的片段创建了一个容器
  3. 我试图在按下按钮时以及在创建包含" addDependent"的容器(在两种方法中都尝试过)时直接将模型设置为片段
  4. 在那里,您将看到带有常规i18n绑定的片段的简单xml编码

仅供参考:也许我的编码有些过时了,因为在遇到问题时我尝试了很多事情;)

该编码有什么问题吗? 如果可以,我想知道为什么它可以在我的本地测试环境中工作。

如果我看一下您推荐的链接的编码:我认为与我的编码相比,没有什么新鲜的东西。 你觉得呢?

感谢您的帮助!

此致

蒂姆

木偶小白
7楼-- · 2020-09-08 00:56
 <模块路径>是manifest.json中的ID。   

Jun Wu 已经定义了i18n模型 在我的manifest.json中(请参见 i18n-manifest.png

Karthik Arjun 非常感谢您的代码段。 我在我的编码中使用了自定义路径:

 var rootPath = jQuery.sap.getModulePath("/img/sap/bc/ui5_ui5/sap/zindivsel_nmf");

 var i18nModel_it = new sap.ui.model.resource.ResourceModel({
 bundleUrl:[rootPath,'i18n/i18n_it.properties']。join("/")
 });
 this.setModel(i18nModel_it," i18n_it"); 

然后,在启动板中使用以下(错误的)路径(只有通过编码指定的第二部分才是正确的):

https://XXX/sap/bc/ui5_ui5/ui2/ushell/resources/~20190213161400~/sap/bc/ui5_ui5/sap/zindivsel_nmf/i18n/i18n_it.properties

>

new-path.png

是否可以用第二部分覆盖第一部分" sap/bc/ui5_ui5/ui2/ushell/resources/〜20190213161400〜/" ?

感谢您的帮助!

此致

Tim

一周热门 更多>