[系统设计,求思路]国际化字符串变量替换问题

青楼好梦 2016-06-22 12:29:05
现在是:
程序中使用code 对照 xml中的中文或者英文的字符串资源。

有时会遇到xml中的字符串有动态变量的地方,例如:{0}和{1}不是好友,{0}{1}是用户真实姓名。
系统后台管理程序中要有对这些字符串更改的功能。

场景1:比如改成用户的昵称,用户的代号等。
场景2:比如增加了动态变量,{0},{1},{2}不是好友。
场景3:比如更复杂一点的字符串的句意都改变了,{0}不存在。{0}有可能已经不是用户对象了。

像第三种场景,本身后台代码里是引用了用户对象在替换或者格式化字符串,那句意更改后,对象也会变。怎么破。

分数不多,忘大神们告知。
...全文
354 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
cheng2005 2016-06-22
  • 打赏
  • 举报
回复
定义和数据是相互对应的,而不是和逻辑。 简单点说,如果你的数据像是字典里的每个字,那么你可以随意的根据定义把任意数据取出来,这种情况下,你定义的格式如何变化都无所谓,因为你能拿到所有数据。 但是,如果你的数据是通过一个第三者来获取的,比如有一只猴子,它会给你固定的几个字,那么在这种情况下,你使用数据的方式其实就固定了,定义也就不能更改了,你想多要一个字,就必然要教会猴子如何去取那个字。
青楼好梦 2016-06-22
  • 打赏
  • 举报
回复
@cheng2005 您再看看这次能明白我的意思吗? 感谢
青楼好梦 2016-06-22
  • 打赏
  • 举报
回复
引用 4 楼 wddw1986 的回复:
看了半天都不知道你在说什么,也许是我水平太差了。
想做国际化,然后遇到点问题。 目前我的实现方式是, code=string 但是string中可能存在动态的变量赋值,比如有时候string="{0}和{1}不是好友。" 此时用到这段字符串的程序需要格式化这段字符串,需要两个参数。假设写程序时直接传入两个变量,分别是用户对象的A的真实姓名属性和B的真实姓名属性。 然后,后台管理部分可以更新这些个字符串,管理人员想让这两个变量显示用户的昵称。 这是场景一的问题。 场景二是有时候后台管理人员会再加一个变量就变成了“{0}{1}{2}”3个变量了,这时候程序就出问题了。不是只传两个参数了。 场景三是有时候后台管理人员把整个字符串的意思都改掉了,比如改成了“{0}文件不存在”,这时候又变成了一个变量,且已经不是用户对象的属性了,变成文件对象的属性了。 我想请教大神们这种问题,怎么能弄的通用一点, 也就是怎么定义一种规范,能适应这几种场景, 比如xml中的每个字符串节点都增加一个属性,指定变量用的是那个对象的那个属性,但是这种又太死,不能满足第三种场景, 看2楼
  • 打赏
  • 举报
回复
什么叫“字符串有动态变量”? xml 语法树对象在 .net 中可以使用 XmlDocument 类对象实例,这就好像 Newtonsoft.Json 框架中使用 JObject 和 JArray 来表示 json 语法树一样。而字符串是与外界输入输出时的静态字符串,那本身是静态的,跟有知识的语法分析结果是两回事。能创建强类型的动态语法对象,自然就能强类型的按照业务需求去动态处理此对象的生成。这跟你所说的“字符串”没有关系。 你可能学过软件较长时间了,但是没有学明白。踏实点,走正规编程开发之路,不要对于底层概念(例如“字符串”)去玩儿什么不一样的东西,要从高级一些的对象类型上去重新学习编程。
cheng2005 2016-06-22
  • 打赏
  • 举报
回复
看了半天都不知道你在说什么,也许是我水平太差了。
青楼好梦 2016-06-22
  • 打赏
  • 举报
回复
引用 1 楼 yanbuodiao 的回复:
xml格式可以修改的话 xml上在属性或者项目把变量单独拿出来 约定好
@烟波钓 求详细解释啊, 大神
青楼好梦 2016-06-22
  • 打赏
  • 举报
回复
引用 1 楼 yanbuodiao 的回复:
xml格式可以修改的话 xml上在属性或者项目把变量单独拿出来 约定好
主对象:用于替换或格式化字符串的对象。 您好,那假设xml的变量提出来为这种格式: <item variable="{0}=object.name{1}=object.age" value="{0}和{1}不是好友" /> 程序根据variable属性来确定取主对象的那个属性字段解决了,这种办法可以解决第一种和第二种场景的问题。 第三种场景是整个句意发生变化了,变成{0}文件不存在。 此时主对象原来是用户对象,现在变成文件对象了。 要是在xml要是再提现出来对象的名称,可以解决,但是就不灵活了,后台编辑人员还需要知道程序里定义的对象名称或者对象的代号。 求大神详细解释。
烟波钓 2016-06-22
  • 打赏
  • 举报
回复
xml格式可以修改的话 xml上在属性或者项目把变量单独拿出来 约定好

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧