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

时间:2009-05-22 04:26:25

标签: c# resources naming-conventions translation

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

5 个答案:

答案 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