资源(.resx)文件关键命名约定?

我正在构建一个C#应用程序,它可能包含一些资源文件来存储字符串以用于语言翻译。 我正在尝试为我的资源文件中的Keys提出命名约定。 有没有人在我面前解决这个问题?

只需使用Pascal命名约定。 不要将密钥归因于模块或类。 概括它以便可以重复使用。

例如:ReadWriteWarningMessage

点分隔约定适用于菜单项。 但是动态生成的字符串或用户消息呢?

您是否考虑过像Menu_File_Open或类似Place_StringDescription之类的下划线? 我目前正在使用一种方案,其中常见的东西像Common_PressHereTo一样去Common_,并且查看特定的东西去MainMenu_FileOpen等各自的位置。 通常,在下划线之前,我会在资源显示的位置输入,并在下划线描述文本之后输入。

我尝试组织它类似于我用来布局程序结构的命名空间。 因此,如果您有MyCompany.MyProduct.MyModule,那么该模块中的字符串将是MyModule_Blah_Blah。 这样他们在整个产品中是独一无二的。

如果您在资源中拥有名称值对

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)); 

希望这会有所帮助。