使用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不同读取对应的资源文件。 en-US则读取A.en-US.resx, zh-CN则读取A.zh-CN.resx
下来我们逐步操作
创建资源文件
创建两个资源文件分别用来记录对应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
根据CultureInfo读取 MutilLanguage.ResourceLan.[CultureInfo.Name].resx资源文件;
最新文章
- 手把手教你用FineBI做数据可视化
- javascript模块化编程(三):require.js用法
- 几种display:table-cell的应用
- jsp页面往mysql里插入中文后数据库里显示乱码
- PowerDesigner 16.5 反向PostgreSQL9.01 中 Unable to list the columns. SQLSTATE = 22003不良的类型值 short : t 解决方法
- iframe与主框架跨域相互访问方法【转】
- HoloLens开发手记 - Known issues 已知问题
- ollydbg z
- android音乐播放器开发 SweetMusicPlayer 实现思路
- matlab 子函数的使用
- 【】小技巧】CSS文字两端对齐
- numpy用法小结
- PyQt5嵌入matplotlib动画
- 无网 离线状态下pip3安装 django等软件
- epoll代码示例
- Day13 Python基础之time/datetime/random模块一(十一)
- js判断类型的四种方法
- Linux Shell 简介
- iframe 父页面与子页面之间的方法的相互调用【转】
- 【linux】Linux软连接和硬链接