本地化:电子邮件的英语国家(地区)变化

2020-09-27 08:12发布

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

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


大家好

我们在GB和US之间有英语差异。 因此,我们创建了en_GB和en_US语言环境,并更新了basetore和basesite的相应符号。 现在,当触发电子邮件时,AbstractEmailContext使用以下行:

 字符串fromName = emailPageModel.getFromName(new Locale(language.getIsocode()));

  

现在,构造函数new Locale(language.getIsoCode())选择iscode = en_GB,但使用en_gb(小写)返回Locale。 因此给出如下异常:

 原因:java.lang.IllegalArgumentException:没有与en_gb匹配的DataLocale(在可用语言环境{es_CO = es_CO-> es_CO,in = in-> id,p中尝试[en_gb]
  t = pt-> pt,fr = fr-> fr,ru = ru-> ru,ja = ja-> ja,zh_TW = zh_TW-> zh_TW,it = it-> it,ko = ko-> ko,de  = de-> de,es = es-> es,zh = zh-> zh,en = en-> en,hi = hi-> hi,cs = cs-> cs,
   ro = ro-> ro,hu = hu-> hu,en_GB = en_GB-> en_GB,pl = pl-> pl}))


  

如果AbstractEmailContext中的构造函数使用的国家如

 新的语言环境(language.getIsocode()," GB")

  

通过返回en_GB(大写)的语言环境将可以正常工作。

有人遇到这个问题了吗? 对于这种情况,我很难覆盖整个init方法。 还是我们做错了什么?

如果我们可以知道该密钥对来自哪里,那么我们将密钥设置为en_gb-> en_GB,那么OOTB可以正常工作。

有帮助吗?

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

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


大家好

我们在GB和US之间有英语差异。 因此,我们创建了en_GB和en_US语言环境,并更新了basetore和basesite的相应符号。 现在,当触发电子邮件时,AbstractEmailContext使用以下行:

 字符串fromName = emailPageModel.getFromName(new Locale(language.getIsocode()));

  

现在,构造函数new Locale(language.getIsoCode())选择iscode = en_GB,但使用en_gb(小写)返回Locale。 因此给出如下异常:

 原因:java.lang.IllegalArgumentException:没有与en_gb匹配的DataLocale(在可用语言环境{es_CO = es_CO-> es_CO,in = in-> id,p中尝试[en_gb]
  t = pt-> pt,fr = fr-> fr,ru = ru-> ru,ja = ja-> ja,zh_TW = zh_TW-> zh_TW,it = it-> it,ko = ko-> ko,de  = de-> de,es = es-> es,zh = zh-> zh,en = en-> en,hi = hi-> hi,cs = cs-> cs,
   ro = ro-> ro,hu = hu-> hu,en_GB = en_GB-> en_GB,pl = pl-> pl}))


  

如果AbstractEmailContext中的构造函数使用的国家如

 新的语言环境(language.getIsocode()," GB")

  

通过返回en_GB(大写)的语言环境将可以正常工作。

有人遇到这个问题了吗? 对于这种情况,我很难覆盖整个init方法。 还是我们做错了什么?

如果我们可以知道该密钥对来自哪里,那么我们将密钥设置为en_gb-> en_GB,那么OOTB可以正常工作。

有帮助吗?

付费偷看设置
发送
3条回答
SAP浪
1楼-- · 2020-09-27 08:17

嗨,

发送电子邮件的问题是由于isocode的默认配置(例如en_US,es_CO,zh_TW)无法正确处理造成的。

需要在/acceleratorservices/src/de/hybris/platform/acceleratorservices/process/email/context/AbstractEmailContext.java中实现init方法的新实现。

"新的Locale(languageModel.getIsocode())"返回的语言区域和国家/地区不正确的语言环境不正确(例如:zh_tw而不是zh_TW),这是LocalizationService必需的。

修正是要覆盖AbstractEmailContext,如下所示:

来自

String fromName = emailPageModel.getFromName(new Locale(language.getIsocode())); //第116行//de.hybris.platform.acceleratorservices.process.email.context.AbstractEmailContext.init(T,EmailPageModel)

最后的String [] loc = Utilities.parseLocaleCodes(language.getIsocode()); 字符串fromName = emailPageModel.getFromName(new Locale(loc [0],loc [1],loc [2]));

做到这一点的最佳方法是重写init()方法。

我希望它会有所帮助。

亲切的问候,

SAP hybris产品支持

CPLASF-自律
2楼-- · 2020-09-27 08:25

在您的核心扩展中,您应该有一个essential-data.impex文件。 在这里,我希望看到类似以下的内容:

  INSERT_UPDATE语言; isocode [unique = true]; fallbackLanguages(isocode); urlencode属性; active [default = true]
   ; en ;;;
   ; es; en; es-es;
   ; nl; en; nl-nl;
   ; en_US; en;  en-us;
   ; en_GB; en; en-gb;
   ; fr_CA; en; fr-ca;

  

isocode 的值应为" en_GB"。

另外,检查hMC以查看是否有两个LanguageModels,一个用于en_gb,另一个用于en_GB。

bbpeas
3楼-- · 2020-09-27 08:27

乔纳森(Jonathan)

它是en_GB,但是语言环境构造函数new Locale(language.getIsocode())将其转换回en_gb。 只有使用适当的构造函数区域(例如new Locale(language.getIsocode()," GB")),它才会保留为en_GB

一周热门 更多>