0

我正在创建包含几个我想分类的字符串消息的 WebResources.resx 文件:

Signup_Status_Inactive Signup_Status_Reserved 等...

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

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

.resx 文件的字符串组件是否只有一层?

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

谢谢。

4

1 回答 1

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} = 用户名”之类的评论</p>

您还必须以某种方式检查翻译人员是否弄乱了占位符,我看到翻译人员将“{0}”更改为“(0)”,因为他们“认为其他类型的括号看起来更好”等等!或删除其中一个蕨菜,使字符串格式不再有效。

请参阅如何验证格式字符串

于 2009-10-14T09:42:13.433 回答