实体上的本地化字符串云应用程序编程模型

2020-08-20 04:19发布

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

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


阅读博客 https://blogs.sap.com/2018/08/24/top-5-time- Saving-benefits-of-the-application-programming -model-for-sap-cloud-platform/comment-page-1/#comment-441922 ,在第一项中。 我有一个关于本地化字符串的问题。 我曾期望第二张表将产品描述和语言作为键之一,或者将表中的某些内容标识为文字语言。

例如:

实体ProductTypes {
 关键代码:整数;
 name:本地化的String(40)@title:'{i18n> Name}';
 }
 

我需要创建一个CSV文件,以便以不同的语言导入ProductType,由于我没有选择语言环境的字段,该怎么办?

致谢

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

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


阅读博客 https://blogs.sap.com/2018/08/24/top-5-time- Saving-benefits-of-the-application-programming -model-for-sap-cloud-platform/comment-page-1/#comment-441922 ,在第一项中。 我有一个关于本地化字符串的问题。 我曾期望第二张表将产品描述和语言作为键之一,或者将表中的某些内容标识为文字语言。

例如:

实体ProductTypes {
 关键代码:整数;
 name:本地化的String(40)@title:'{i18n> Name}';
 }
 

我需要创建一个CSV文件,以便以不同的语言导入ProductType,由于我没有选择语言环境的字段,该怎么办?

致谢

付费偷看设置
发送
6条回答
昵称总是被占用
1楼 · 2020-08-20 04:42.采纳回答

这是一个很好的问题; 我做了一些挖掘工作,因为我认为面向公众的网站上的文档有些落后。 "本地化"修饰符确实是有效的,并且需要添加正确的内容,但该功能本身仍处于测试阶段。 为了使用此功能,请确保您在项目的根目录中有一个.cdsrc.json文件(使用'cds init初始化一个新项目将始终为您提供其中一个文件),并在其中添加以下内容:/p>

"功能":{
   "本地化":true
 },
 " cdsc":{
   " betaMode":true 
}

然后(通过" cds deploy")显式或隐式编译时,不仅会获得表定义:

 CREATE TABLE ProductTypes(
   代码INTEGER,
名称NVARCHAR(40),
主键(代码) );

,但还有一个特定于语言环境的"文本"表:

 CREATE TABLE ProductTypes_texts(
   语言环境NVARCHAR(5),
   代码INTEGER,
   名称NVARCHAR(40),
   主键(语言环境,代码)
 ); 

此外,对于基于SQLite的持久层,您可以获得一些特定于语言环境的视图。

dj

SAP砖家
2楼-- · 2020-08-20 05:05

嗨。

您是否有一些有关如何在服务中使用它的文档,哪些cds语句对主数据具有本地化服务是正确的?

HANA DB也可以使用吗?

是否可以同时使用odata v2和odata v4?

非常感谢

Gianni

DafaDDDa
3楼-- · 2020-08-20 04:47

使用最新的CDS版本,无需附加cdsrc.json设置即可使用本地化功能。

它也适用于HANA DB和两个数据版本。

假设您已经在服务中公开了ProductType,则从中进行选择,该名称将是本地化名称(如果您在ProductTypes_texts中进行了翻译)。

在后台,服务运行时将首先检查是否存在" localized。 .ProductTypes"的定义,这是一个自动创建的视图,可以从ProductTypes_texts(如果没有翻译,则从ProductTypes)中选择。 p>

能不能别闹
4楼-- · 2020-08-20 04:56

嗨,按照您的建议,我已经定义了这样的服务

service TestService {

实体ProductTypes作为db.ProductTypes上的投影;

}

其中db.ProductTypes是本地化的实体。

当我与邮递员测试EntitySet时,我得到了以下响应:

{"错误":{"代码":"不支持该操作。","消息":"不支持该操作。" }}

这怎么了?

有什么主意吗?

詹妮

DafaDDDa
5楼-- · 2020-08-20 04:49

嘿,

我有一个带有实体ValueHelps的CAP Node.JS服务,该服务已本地化。 另外,如果我添加sap-language作为URL参数,则数据库中的数据可用,并且req.user.locale设置为" de"。 但是,始终会显示默认语言。

http://localhost:4004/import/ValueHelps('42458')?sap-language = de

 {
     " @ odata.context":" $ metadata#ValueHelps/$ entity",
     " ID":" 42458",
     " name":"组织管理",
     "描述":null,
 }

 

help-service.cds

使用{de.org作为我的},来自" ../db/src/schema";
 服务HelpService @readonly {
   实体ValueHelps作为my.ValueHelps;上的投影; ...} 

help-service.js

 const cds = require('@ sap/cds')module.exports =异步function(){
     this.on('READ',(req,res,next)=> {
         console.log(req.user.locale)})...} 

schema.cds

实体ValueHelps:托管{keyID:String;
   externalID:字符串;类型:字符串;名称:本地化字符串;描述:本地化字符串;状态:字符串;}
 实体用户:托管{keyID:String; locale:String;} 
xfwsx85
6楼-- · 2020-08-20 04:59

在您的文本表中,我看到" de_DE"为LOCALE,您应该只使用" de"。

有关详细信息,请参见 https://cap.cloud.sap/docs/ guides/i18n#user-locale

一周热门 更多>