使用Resource文件实现应用程序多语言
写在前面:
1.创建资源文件
资源文件命名规则为:文件名(自定义)+cultrueInfo.Name+.resx后缀名
如:A.en-US.resx A.zh-CN.resx
这样命名应用程序代码会根据cultureInfo来确定从哪一个文件读取资源
2.加载资源文件
var rm = ResourceManager("{namespace}.A", typeof({namespace}.{className}).Assembly);
以资源名规则举例的名称为例加载资源
3.设置应用的Culture
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
4.读取资源
创建资源文件
创建两个资源文件分别用来记录对应culture的语言 ResourceLan.en-US.resx,ResourceLan.en-US.resx
加载资源文件
namespace MutilLanguage
{
public class Language
{
public static ResourceManager LanResManager
{
get
{
return new ResourceManager("MutilLanguage.ResourceLan", typeof(MutilLanguage.Language).Assembly);
}
}
}
}
ResourceManager 第一个参数为资源文件的源名称,源名称是用来定位资源文件的,为:命名空间.文件前缀(文件名第一个点以前为前缀),即MutilLanguage.MutilLanguage。我的资源文件名称为ResourceLan.en-US.resx,ResourceLan.en-US.resx 前缀为 ResourceLan
第二个参数,用来定位Assembly文件位置,也就是资源文件项目的Assembley,我在项目中添加了Language类,用来定位Assembley
设置CultureInfo,读取数据
var culture = new CultureInfo("en-US");//if set culture new CultureInfo("zh-CN"); output:运动商店
Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = culture;
var resManager = MutilLanguage.Language.LanResManager;
var appName= resManager.GetString("appName");
Console.WriteLine(appName);
//output:SportStore
本文来自博客园,作者:jiayouliucui,转载请注明原文链接:https://www.cnblogs.com/cheery-go/p/15661887.html