部署后i18n Fiori App扩展出现问题

2020-09-14 15:43发布

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

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


你好

我扩展了"批准请假申请" Fiori应用程序,以更改i18n文件的某些文本。

但是,在扩展过程中遇到了一些问题,我无法按照SAP的意图扩展i18n文件夹(新建>扩展> i18n定制)。

因此,我遵循以下主题中的答案(并查阅了本网站上的所有其他相关主题):

i18n用于扩展的Fiori应用

我在扩展项目中添加了一个i18n文件夹,并在其中添加了国际化文件(i18n_en.properties,...)。 在这些文件中,我添加了其他翻译(标准的替代)。 在扩展项目的component.js中,添加了以下代码

 config:{
 " sap.ca.i18Nconfigs":{
 bundleName:" <您的组件名称> .i18n.i18n"
 }
 }
 

我将替换为component.js中指定的扩展组件的名称

因此,在进行了这些更改之后,它可以在我的Web IDE环境中运行,当我在Web IDE中运行索引文件时,将显示新的翻译。

但是,在将应用程序扩展部署到我的ECC,ABAP存储库中并正确配置磁贴以调用该扩展以及LPD_CUST之后,在Web IDE中正确运行的更改在ECC中不起作用。

该应用程序正在运行,调用了该扩展程序,但是在运行该应用程序时无法观察到在扩展程序中所做的更改。 请注意,控制台中没有错误。

对这个问题有任何想法吗?

非常感谢

亚历克斯。

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

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


你好

我扩展了"批准请假申请" Fiori应用程序,以更改i18n文件的某些文本。

但是,在扩展过程中遇到了一些问题,我无法按照SAP的意图扩展i18n文件夹(新建>扩展> i18n定制)。

因此,我遵循以下主题中的答案(并查阅了本网站上的所有其他相关主题):

i18n用于扩展的Fiori应用

我在扩展项目中添加了一个i18n文件夹,并在其中添加了国际化文件(i18n_en.properties,...)。 在这些文件中,我添加了其他翻译(标准的替代)。 在扩展项目的component.js中,添加了以下代码

 config:{
 " sap.ca.i18Nconfigs":{
 bundleName:" <您的组件名称> .i18n.i18n"
 }
 }
 

我将替换为component.js中指定的扩展组件的名称

因此,在进行了这些更改之后,它可以在我的Web IDE环境中运行,当我在Web IDE中运行索引文件时,将显示新的翻译。

但是,在将应用程序扩展部署到我的ECC,ABAP存储库中并正确配置磁贴以调用该扩展以及LPD_CUST之后,在Web IDE中正确运行的更改在ECC中不起作用。

该应用程序正在运行,调用了该扩展程序,但是在运行该应用程序时无法观察到在扩展程序中所做的更改。 请注意,控制台中没有错误。

对这个问题有任何想法吗?

非常感谢

亚历克斯。

付费偷看设置
发送
7条回答
软件心理学工程师
1楼-- · 2020-09-14 15:48

Alex,你好,

根据新的SAP标准,您无法扩展i18n文件,需要与现有文件合并

此处检查。

例如。如果您要更改现有页面标题{i18n> PAGE_TITLE}

在扩展应用中创建自己的i18nCustom文件

i18nCustom.properties

 PAGE_TITLE =我的页面标题

将i18n文件引用添加到 manifest.json 文件

"模型":{
             " i18nCustom":{
                 " type":" sap.ui.model.resource.ResourceModel",
                 "设置":{
                     " bundleName":" <您的组件名称> .i18n.i18nCustom"
                 }
             }
 }
  

扩展控制器(例如: S1Custom.controller.js )在

中编写以下代码
 onBeforeRendering:function(){
 var i18n = this.getModel(" i18n"); //获取标准的i18n文件
 var sBundleURL = this.getModel(" i18nCustom")。getResourceBundle()。oUrlInfo.url;
 i18n.enhance({bundleUrl:sBundleURL}); //将自定义i18n文件与标准文件合并
 },
 

Climb_Ma
2楼-- · 2020-09-14 15:46

嗨,

尝试在最后设置模型

 this.setModel(oModel," i18n"); 

致谢

面料

Bunny_CDM
3楼-- · 2020-09-14 15:48

嗨,

我尝试了Vedaradhya的解释方式(带有指向i18n文件的相对路径)以及SAP在其网站上的解释方式,但是它不起作用。

但是,控制台中没有错误消息,似乎程序无法读取i18n自定义文件?

以下是我在S2 Controller中添加的当前代码。 是否有人有想法进行这种简单的增强功能?

谢谢!

亚历克斯。

 onBeforeRendering:function(){
 var oModel = new sap.ui.model.resource.ResourceModel({bundleUrl:" ./hcm_lrq_apv/i18n/i18n.properties"});;
 oModel.enhance({bundleUrl:" ./zhcm_lrq_apv_rd/webapp/i18n/i18nCustom.properties"});
 }
 
一只江湖小虾
4楼-- · 2020-09-14 15:56

嗨,

谢谢。

但是它仍然不起作用,这是控制台中的错误消息:

i18n_en_US.properties 文件在应用程序中,我弄乱了路径吗?

这是S2控制器中的代码:

 onBeforeRendering:function(){
 var oModel = new sap.ui.model.resource.ResourceModel({bundleUrl:" ../hcm_lrq_apv/i18n/i18n.properties"});;
 oModel.enhance({bundleUrl:" ../zhcm_lrq_apv_rd/webapp/i18n/i18nCustom.properties"});;
 sap.ui.getCore()。setModel(oModel," i18n");
 }
 
哎,真难
5楼-- · 2020-09-14 15:57

嘿Alex,

不确定您是否已解决问题:

我遇到了同样的问题,我不得不在扩展程序中扩展Fiori App的i18n模型。 我完全按照韦德拉达(Vedaradhya)在第一个答案中的建议进行了工作,对我有用。

因此,您可能想要尝试的是在扩展应用程序中创建manifest.json(如果您还没有的话)(这样您也可以删除component.js中有关扩展/替换的任何编码) 视图和控制器,并将其放入新清单中

然后返回到S2控制器。

使用建议的Vedaradhya代码

 onBeforeRendering:function(){
 var i18n = this.getModel(" i18n"); //获取标准的i18n文件
 var sBundleURL = this.getModel(" i18nCustom")。getResourceBundle()。oUrlInfo.url;
 i18n.enhance({bundleUrl:sBundleURL}); //将自定义i18n文件与标准文件合并
 },

(确保扩展应用程序manifest.json中的i18n型号名称为" i18nCustom",以使该示例代码对您有用)

据我了解,这里发生的事情是扩展的应用程序将加载原始的i18n模型,然后加载您的自定义i18n模型并覆盖您在此处定义的每个文本。

使用SDK文档中的SAP示例,我遇到了很多有关路径的问题=>我猜相对路径在这里不太好用。 通过使用this.getModel(sName),您就不会遇到这个问题,因为您的应用同时知道原始的i18n模型和新的自定义模型。

我希望它能对您有所帮助(如上所述:如果仍然需要帮助)

渐行渐远_HoldOn
6楼-- · 2020-09-14 16:06

朱莉安你好,

谢谢您的帮助。

我再次尝试了先前的代码,并按照建议从Component中删除了扩展名,但是对我而言仍然无效。 (应用程序正在运行,但更改后的i18n文本不会显示)

您是如何在manifest.json中准确声明扩展名的?

现在控制台中出现以下错误消息:

'hcm.approve.leaverequest.ZHCM_LRQ_APV_RD'没有可用的组件句柄; 回退到component.load()-sap.ushell.components.container.ApplicationContainer


谢谢

亚历克斯。


一周热门 更多>