31

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

4

5 回答 5

17

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

例如:ReadWriteWarningMessage

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

于 2009-06-04T18:30:24.253 回答
5

您是否考虑过像 Menu_File_Open 或 Place_StringDescription 这样的下划线?我目前采用一种方案,其中常见的东西去 Common_ 像 Common_PressHereTo 和查看具体去他们各自的地方像 MainMenu_FileOpen。通常,在下划线之前输入资源出现的位置,在下划线之后输入描述性文本。

于 2009-05-28T18:36:52.327 回答
4

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

于 2009-05-28T18:40:04.490 回答
1

请参阅https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/naming-resources。正如@bobbyalex 所说,这包括使用PascalCasing,因为生成的资源设计器文件确实将资源实现为属性。

✔️ 务必在资源键中使用 PascalCasing。

✔️ 请务必提供描述性而非简短的标识符。

❌ 不要使用主要 CLR 语言的语言特定关键字。

✔️ 请务必在命名资源时仅使用字母数字字符和下划线。

✔️ 请务必对异常消息资源使用以下命名约定。

资源标识符应该是异常类型名称加上异常的简短标识符:

ArgumentExceptionIllegalCharacters ArgumentExceptionInvalidName ArgumentExceptionFileNameIsMalformed

于 2020-06-16T17:01:02.180 回答
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));

希望这会有所帮助。

于 2009-05-22T04:59:09.517 回答