【问题标题】:Resource (.resx) file Key naming conventions?资源 (.resx) 文件密钥命名约定?
【发布时间】:2009-05-22 04:26:25
【问题描述】:

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

【问题讨论】:

    标签: c# resources naming-conventions translation


    【解决方案1】:

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

    例如:ReadWriteWarningMessage

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

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

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

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

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

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

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

          ArgumentExceptionIllegalCharactersArgumentExceptionInvalidNameArgumentExceptionFileNameIsMalformed

          【讨论】:

            【解决方案5】:

            如果您在资源中有一个名称值对,例如

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

            希望这会有所帮助。

            【讨论】:

            • 这不是关于键的命名约定,而是关于如何访问资源文件中的消息的策略。
            • 感谢 Prajeesh,我可以毫无问题地访问该资源。不过,我的问题是我可能有几百个键,并且想要一种简单的方法来查找它们。我遇到了一个类似的惯例,例如: Menu.File.Open 作为菜单标题的示例。我喜欢这种方法,但是在使用强类型资源(我就是这样)时,小数不是预先设定的。不过还是谢谢...
            猜你喜欢
            • 2017-04-23
            • 2023-03-02
            • 2016-07-21
            • 1970-01-01
            • 1970-01-01
            • 2016-04-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多