C#使用RESX文件实现标签与错误信息的资源全球化方案咨询
.NET 4.7.2 Winform项目多分类RESX全球化资源实现方案
步骤1:新增错误类资源文件到Resources文件夹
- 右键项目中的
Resources文件夹 → 选择【添加】→【新建项】→ 搜索【资源文件】 - 先创建不带语言后缀的中性错误资源文件,命名为
ABC.Error.Resources.resx(必须先创建中性资源文件,编译器才会生成对应的强类型资源类和多语言卫星DLL) - 再按语言需求添加对应区域的资源文件,比如捷克语版本命名为
ABC.Error.Resources.cs-CZ.resx,其他语言以此类推添加
添加完成后文件夹结构如下:
Resources ├─ABC.Label.Resources.resx(原有中性标签资源,如之前未创建需补充) ├─ABC.Label.Resources.cs-CZ.resx ├─ABC.Error.Resources.resx(新增中性错误资源) └─ABC.Error.Resources.cs-CZ.resx(新增捷克语错误资源)
步骤2:配置资源文件生成属性
中性资源文件(ABC.Error.Resources.resx)配置:
右键文件查看【属性】,按以下参数设置:
- 生成操作:
嵌入的资源 - 自定义工具:
PublicResXFileCodeGenerator(仅项目内部访问资源可填ResXFileCodeGenerator) - 自定义工具命名空间:填写项目统一的资源命名空间,例如
YourProjectName.GlobalResources - 保存后如果没有自动生成强类型资源类,右键文件选择【运行自定义工具】即可
多语言资源文件(ABC.Error.Resources.cs-CZ.resx等带语言后缀的文件)配置:
右键文件查看【属性】,按以下参数设置:
- 生成操作:
嵌入的资源 - 自定义工具:留空(不需要单独生成类,语言资源会自动关联中性资源类加载)
步骤3:验证生成结果
重新编译项目后,输出目录对应语言文件夹(比如cs-CZ文件夹)会生成包含两类资源的卫星DLL,原有标签资源的生成逻辑不受任何影响。
步骤4:资源调用示例
using System.Globalization; // 调用标签资源 var loginLabel = ABC.Label.Resources.ResourceManager.GetString("LoginBtnText", new CultureInfo("cs-CZ")); // 调用错误信息资源 var accountError = ABC.Error.Resources.ResourceManager.GetString("AccountNotFound", new CultureInfo("cs-CZ"));
如果项目已配置默认线程UI文化,可省略第二个CultureInfo参数,资源管理器会自动匹配当前线程文化加载对应内容。
内容的提问来源于stack exchange,提问作者Aryan
相关产品推荐
相关产品推荐

