资源和本地化 - .resx文件中的父/子字符串?

时间:2009-09-22 02:11:07

标签: string parent-child resx

我正在使用我要分类的几个字符串消息创建WebResources.resx文件:

Signup_Status_Inactive Signup_Status_Reserved 等...

由于它只是后台的XML文件,是否可以创建父/子关系,因此我不必为相关的字符串添加前缀并遵循更好的点符号?

为了解决这个问题,我可以创建一个类,其中一些属性通过适当的点表示法访问,即StatusMessages.Signup.Inactive - 但这只是额外的工作。

.resx文件的字符串组件只有一个级别吗?

此外,如何输出会话变量作为resx值的一部分 - 即: “你的卡#”+ HttpContext.Current.Session [“ReservedCardNum”] +“已经为你保留。”

感谢。

1 个答案:

答案 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)”,因为他们“认为其他类型的括号看起来更好”等等!或删除其中一个括号,使字符串格式不再有效。

请参阅How to validate format string