苍穹平台开发代码多语言字串拼接处理方式原创
金蝶云社区-whlalhj
whlalhj
2人赞赏了该文章 362次浏览 未经作者许可,禁止转载编辑于2023年07月28日 11:47:49

之所以写这篇文章,

多语言规范

https://vip.kingdee.com/article/241181198498975488?productLineId=29&isKnowledge=2

是发现  这篇文章的里面描述是存在些需要优化的地方。


具体需要优化的地方,在处理词条拼接处理,是不需要再多加一个String.format( 的处理,是可以使用ResManager.loadKDString(的处理直接完成的


先说结论:可以有2种方式进行拼接

直接上测试截图:

image.png

如图中的代码:

		String String_format = ResManager.loadKDString("这是一首%s小%2$s", "resourceID","systemType","简单的", "情歌");
		String MessageFormat_format = ResManager.loadKDString("这是一首{0}小{1}", "resourceID","systemType","简单的", "情歌");

都是可以做到,对字符串进行拼接格式化。

分别可以有2种占位符替换的方式:

方式一:%s,%2$s的 

方式二:{0} ,{1} 方式的


原理:我们通过跟踪代码可以发现,位于“kd.bos.bundle.Resources#format”的代码 image.png

s.contains("%s") ? String.format(s, args) : MessageFormat.format(s, args);

当包含 %s 就是用的 String.format(s, args)进行替换,否则就是用的MessageFormat.format(s, args)进行替换。


本质就是用的 String.format()及MessageFormat.format()进行的占位符替换的方式,

其实还可以支持更多种的占位符的替换方式,更多方式具体格式可参考如下参考的连接


jsva基础---String.format()与MessageFormat.format()

https://blog.csdn.net/chihaihai/article/details/105172142


MessageFormat和String类中的format使用

https://blog.csdn.net/yunxing323/article/details/111825259


the end。

赞 2