我正在构建一个C#应用程序,它可能包含一些资源文件来存储字符串以用于语言翻译。我正在尝试为我的资源文件中的密钥提出命名约定。有没有人在我面前解决这个问题?
答案 0 :(得分:14)
只需使用Pascal命名约定即可。不要将密钥归因于模块或类。概括它以便可以重复使用。
例如:ReadWriteWarningMessage
点分隔约定适用于菜单项。但是动态生成的字符串或用户消息呢。
答案 1 :(得分:4)
您是否考虑过像Menu_File_Open或Place_StringDescription之类的下划线? 我目前使用一种方案,其中常见的东西像Common_PressHereTo一样去Common_,并且查看具体的东西去MainMenu_FileOpen等各自的位置。通常,在下划线之前输入资源出现的位置和下划线描述性文本之后。
答案 2 :(得分:4)
我尝试组织它,类似于我用来布局程序结构的命名空间。因此,如果您有MyCompany.MyProduct.MyModule,那么该模块中的字符串将是MyModule_Blah_Blah。这样他们在整个产品中就是独一无二的。
答案 3 :(得分: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));
希望这会有所帮助。
答案 4 :(得分:0)
请参见https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/naming-resources。正如@bobbyalex所说,这包括使用PascalCasing,因为生成的资源设计器文件确实将资源实现为属性。
✔️务必在资源密钥中使用PascalCasing。
✔️确实提供了描述性而非简短的标识符。
❌请勿使用CLR主要语言的特定于语言的关键字。
✔️在命名资源时,请仅使用字母数字字符和下划线。
✔️不要对异常消息资源使用以下命名约定。
资源标识符应该是异常类型名称加上该异常的简短标识符:
ArgumentExceptionIllegalCharacters
ArgumentExceptionInvalidName
ArgumentExceptionFileNameIsMalformed