电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

提示语拼接问题及样例

来源:金蝶云社区作者:金蝶2024-09-234

提示语拼接问题及样例

1 问题描述

     在日常开发中,经常会遇到使用提示语进行客户提示的场景。但是由于使用场景或开发习惯,经常会导致一些提示语出现拼接的情况。一旦提示语出现拼接就会给提示语的多语言翻译带来一定的影响。因此希望通过下面的样例及建议,让开发者在开发中避免发生拼接问题,导致代码修改,重复测试等。


2 拼接样例及建议

  • append拼接问题

       1、中文与字符串参数拼接
StringBuilder msg = new StringBuilder();
     for (TelephoneVerifyResult item : resultList){
         if (!item.isParseSuccess()){
             throw new KDBizException(item.getParseErrorMsg());
         }
     if (!item.isVerifySuccess()){
         Map<String,String> result = item.getVerifyResult();
         String message = CollectionUtils.isEmpty(result)?"":result.get("message");
         if (StringUtils.isNotBlank(message)){
        msg.append(ResManager.loadResFormat("账号:","AdmRegisterPlugin_29","scm-adm-formplugin")); 
         msg.append(message); 
         throw new KDBizException(msg.toString());
     }
 }


        这种拼接会被可翻译性检查服务检查出来,可能导致最终展示的内容缺失,语义不完整导致无法准确翻译。

        修改建议:

        1、去掉“账号:”中文内容,直接展示校验的错误信息。

        2、msg.append(ResManager.loadKDString("账号:%s","AdmRegisterPlugin_29","scm-adm-formplugin", message)); 这样还是不能根本解决问题,但是翻译员会知道需要翻译的内容会有占位符替换内容。


   2、 中文与中文符号拼接

StringBuilder msg = new StringBuilder();
   msg.append(ResManager.loadKDString("系统管理员姓名:", "AdmSupplierChgEdit_9", "scm-adm-formplugin"));
   msg.append("【");
   msg.append(userName);
   msg.append("】");

        这种是明显的词条拼接,翻译员无法准确的拿到翻译的完整内容。导致无法准确的进行翻译。

        修改建议:使用占位符的方式来描述句子的完整内容。


 StringBuilder msg = new StringBuilder();
   msg.append(ResManager.loadKDString("系统管理员姓名:【%s】", "AdmSupplierChgEdit_9", "scm-adm-formplugin"));


   3、中文句子不完整拼接


         StringBuilder sb;

         for (Row row : ds) {

                 sb = new StringBuilder();

                 String time = sdf.format(row.getDate("fexetime"));

                 sb.append(time);

                 sb.append(' ');

                 String name = getNameByBilltype(row.getString("billtype"));

                 sb.append(name);

                 sb.append(ResManager.loadKDString("成功归档。", "CardArchiveLogPlugin_0", "fi-aef-formplugin"));

                 Integer count = row.getInteger("count");

                 sb.append(count);

                 sb.append(ResManager.loadKDString("", "CardArchiveLogPlugin_1", "fi-aef-formplugin"));

                 Label lab = getControl("loglab" + index);

                 lab.setText(sb.toString());

                 index++;

        }

        这种是明显的词条拼接,针对“份”量词在其他语言例如英文中,单独出现时存在不可译问题。修改建议:将提示内容整理成包含占位符的完整句子。方便翻译员准确翻译。

     

 for (Row row : ds) {
    String time = sdf.format(row.getDate("fexetime"));
    String name = getNameByBilltype(row.getString("billtype"));
    Integer count = row.getInteger("count");
    Label lab = getControl("loglab" + index);
    lab.setText(ResManager.loadKDString(“时间:%1$s,类型:%2$s,成功归档%3$s份。” "CardArchiveLogPlugin_0", "fi-aef-formplugin"),time,name,count);
                 index++;
}
   4、中文符号拼接
  

public String toString() {

         String sb = "" +areaCode +':' +

                            String.format(ResManager.loadKDString("关键字=", "CMBArea_0", "ebg-aqap-banks-cmb-dc"),keywords) +',' +

                            String.format(ResManager.loadKDString("省市代码=", "CMBArea_1", "ebg-aqap-banks-cmb-dc"),areaCode) +',' +

                            String.format(ResManager.loadKDString("省份=", "CMBArea_2", "ebg-aqap-banks-cmb-dc"),province) +',' +

                            String.format(ResManager.loadKDString("城市=", "CMBArea_3", "ebg-aqap-banks-cmb-dc"),city) +',' +

                            String.format(ResManager.loadKDString("联行号(地区码)=", "CMBArea_4", "ebg-aqap-banks-cmb-dc"),branchBankCode) +

                            "";

         return sb;

}

    

        这种拼接没有将需要转换的中文符号包含在提示语中,会导致在其他语言环境下,翻译员不能通过对翻译的修改来进行符号的转换。同时中文客户看到的语句中出现了非中文的符号内容。

        修改建议:将句子整理成包含中文符号和占位符的完整句子。

        

   public String toString() {
      String sb = ResManager.loadKDString("【%1$s:关键字=%2$s,省市代码=%3$s,省份=%4$s,城市=%5$s,联行号(地区码)=%6$s】" ,areaCode,keywords,areaCode,province,city,branchBankCode);
       return sb;
   }
  • 中文断句问题

    1、无效中文拼接

private static String getFullName(long modelId, String dimension,String num) {

         StringBuilder sb = new StringBuilder();

         IDNumberTreeNode member;

         int index = num.indexOf("@");

         if ( index < 0) {

                   member = MemberReader.findMemberByNumber(MemberReader.findModelNumberById(modelId), dimension, num);

         } else {

                   member = MemberReader.findMemberByNumber(MemberReader.findModelNumberById(modelId), dimension, num.substring(0, index));

         }

         String memNumber = member.getNumber();

         String memName = member.getName();

         if (member  == IDNumberTreeNode.NotFoundTreeNode && num.contains(":")) {

                   String[] splits = num.split(":");

                   Long dimensionId = MemberReader.getDimensionIdByNum(modelId, dimension);

                   memNumber =splits[0] + ":" + DimPropList.getDimPropList(dimensionId).getFieldName(splits[0]);

                   Map<Long, IDNumberTreeNode> allNodeFromCache = MemberReader.getAllNodeFromCache(FormConstant.FORM_MEMBPROPERTY, modelId);

                   for (IDNumberTreeNode node : allNodeFromCache.values()) {

                            if (java.util.Objects.equals(node.getDimId(), dimensionId) &&

提示语拼接问题及样例

1 问题描述 在日常开发中,经常会遇到使用提示语进行客户提示的场景。但是由于使用场景或开发习惯,经常会导致一些提示语出现拼接的...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信