我正在使用我要分类的几个字符串消息创建WebResources.resx文件:
Signup_Status_Inactive Signup_Status_Reserved 等...
由于它只是后台的XML文件,是否可以创建父/子关系,因此我不必为相关的字符串添加前缀并遵循更好的点符号?
为了解决这个问题,我可以创建一个类,其中一些属性通过适当的点表示法访问,即StatusMessages.Signup.Inactive - 但这只是额外的工作。
.resx文件的字符串组件只有一个级别吗?
此外,如何输出会话变量作为resx值的一部分 - 即: “你的卡#”+ HttpContext.Current.Session [“ReservedCardNum”] +“已经为你保留。”
感谢。
答案 0 :(得分:2)
.resx文件中的所有键都是单级,但是没有什么可以阻止您使用自己的XML格式,只要您编写代码来读取它以及需要的任何工具保持它。
要输出会话变量,我会使用String.Format()
通常你会写
String.Format(“"Your Card #{0} has been reserved for you.",
HttpContext.Current.Session["ReservedCardNum"])
所以只需使用
String.Format(stringLookedFromResouceFile,
HttpContext.Current.Session["ReservedCardNum"])
并将“{0}”放入已翻译的字符串中,这样翻译人员可以根据需要更改单词的顺序。
考虑如何与翻译人员沟通占位符,如果译员使用显示评论字段的资源编辑器,您可以添加“{0} = username”等评论
你还必须以某种方式检查翻译人员不会搞砸占位符,我看到翻译人员将“{0}”更改为“(0)”,因为他们“认为其他类型的括号看起来更好”等等!或删除其中一个括号,使字符串格式不再有效。