资源 (.resx) 文件的键命名约定是什么?

33

我正在构建一款C#应用程序,很可能包含一些资源文件来存储用于语言翻译的字符串。我正在尝试为我的资源文件中的键制定命名规则。有人在我之前解决过这个问题吗?

5个回答

17

只需使用帕斯卡式命名约定。不要将键归属于模块或类。泛化它,以便可以重复使用。

例如:ReadWriteWarningMessage

点分隔符约定对于菜单项非常有效。但是动态生成的字符串或用户消息怎么办。


5

您是否考虑过使用下划线,例如Menu_File_Open或者Place_StringDescription等?我目前采用的方案是将常见内容放在Common_中,如Common_PressHereTo,而视图特定的则放在其各自的位置,例如MainMenu_FileOpen。通常,在下划线之前,我会输入资源出现的位置,而在下划线之后则是描述性的文本。


4

我尝试按照命名空间的方式来组织它,以便与我正在使用的程序结构相似。因此,如果您有MyCompany.MyProduct.MyModule,那么该模块中的字符串将是MyModule_Blah_Blah。这样它们在整个产品中就是唯一的。


4
请参考https://learn.microsoft.com/zh-cn/dotnet/standard/design-guidelines/naming-resources。正如@bobbyalex所说,这包括使用PascalCasing,因为生成的资源设计器文件将资源实现为属性。
✔️ DO在资源键中使用PascalCasing。 ✔️ DO提供描述性而不是简短的标识符。 ❌ DO NOT使用主要CLR语言的特定关键字。 ✔️ DO在资源命名中仅使用字母数字字符和下划线。 ✔️ DO对异常消息资源使用以下命名约定。 资源标识符应该是异常类型名称加上异常的简短标识符: ArgumentExceptionIllegalCharacters ArgumentExceptionInvalidName ArgumentExceptionFileNameIsMalformed

0
如果您在资源中有一个名称值对,例如:
CloseConfirmation - 您是否要关闭窗口而不保存?
请添加一个名为“Messages”的新类。
 public static class Messages
{
    public const String CloseConfirmation = "CloseConfirmation";
    public static String GetMessage( String messageId )
    {
        return //your namespace//.Properties.Resources.ResourceManager.GetString( messageId );
    }}

并使用以下方式访问

MessageBox.Show( Messages.GetMessage(Messages.CloseConfirmation));

希望这能有所帮助。

2
这不是关于键的命名约定,而更多地涉及如何访问资源文件中的消息的策略。 - Juri
谢谢Prajeesh,我能够顺利访问资源。但我的问题是,我可能有几百个键,想要一种简单的方式来查找它们。我发现了一个分层约定,例如Menu.File.Open作为菜单标题的示例。我喜欢这种方法,但在使用强类型资源时不允许使用小数(而我正在使用强类型资源)。不过还是感谢你的建议... - Dawsy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接