资源(.resx)文件密钥命名约定?

问题描述 投票:30回答:5

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

c# resources naming-conventions translation
5个回答
15
投票

就用Pascal的命名惯例。不要把key归于一个模块或类。一般化它,这样它就可以被重复使用。

例如:ReadWriteWarningMessage。

对于菜单项来说,用点分隔的方式是可以的,但对于动态生成的字符串或用户信息呢?但是对于那些动态生成的字符串或者用户消息呢。


5
投票

你是否考虑过像Menu_File_Open这样的下划线或者像Place_StringDescription这样的东西?我目前采用的方案是,普通的东西去Common_像Common_PressHereTo这样的Common_,而特定的视图则去各自的地方,比如MainMenu_FileOpen。一般来说,在下划线前我键入资源出现的位置,下划线后键入描述性文字。


4
投票

我试着用类似于我用来布局程序结构的命名空间来组织。 所以如果你有MyCompany.MyProduct.MyModule,那么该模块中的字符串就会是MyModule_Blah_Blah。 这样它们在整个产品中是唯一的。


0
投票

如果你在资源中的名称值对,如

CloseConfirmation - 你想关闭窗口而不保存吗?

添加一个新的类,名为 "信息"。

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

希望能帮到你。


0
投票

请看 https:/docs.microsoft.comen-usdotnetstandarddesign-guidelinesnaming-resources。. 正如@bobbyalex所说,这包括使用PascalCasing,因为生成的资源设计器文件确实将资源作为属性来实现。

✔️ DO在资源键中使用PascalCasing。

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

✔️ DO不要使用主要CLR语言的特定语言关键字。

✔️ DO 在命名资源时只使用字母数字字符和下划线。

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

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

ArgumentExceptionIllegalCharacters ArgumentExceptionInvalidName ArgumentExceptionFileNameIsMalformed

© www.soinside.com 2019 - 2024. All rights reserved.