一个多语言实现方案(Koala1.0.0.0 ,采用Mustang1.0.0.0)
摘要:目前,面向国际或一些本地的跨国公司的软件和项目越来越多,这些系统往往要求实现多语言显示界面,所以实现多语言方案也是很有必要的。本方案中语言内容和界面采用了Mustang 1.0.0.0的映射机制。
解决问题:
1)界面的多语言显示
2)能够把正常的开发和多语言的工作分开,并行来做。一般来说,多语言的工作量巨大,让开发人员来做并有点可惜。可以把多语言从开发中剥离出来,交给其他的人来做,而不需要修改程序。
1.0.0.0版本说明:
1.方案介绍:采用.net的资源文件作为多语言的信息文件(位于KoalaExample\resource下) 。采用Mustang 1.0.0.0作为界面控件和多语言关键字的映射机制。
2.结构介绍:
1)在Global.asax中初始化资源文件信息,把资源文件加入到Cache中
//得到资源文件的路径
if (_resourcePath == null)
{
_resourcePath = this.Request.PhysicalApplicationPath + Path.DirectorySeparatorChar + "resources" + Path.DirectorySeparatorChar;
_helper = new ResourceHelper(this.Context.Cache);
LanguageManager.Initial(_resourcePath);
_helper.SetCacheDependency(MultiLanguageConfig.DefaultConfig.GetValue(MultiLanguageConfig.Languages), this.Context.Cache);
}
2) 一个页面一个映射文件,内容如下:
<?xml version="1.0" encoding="utf-8" ?>
<mustang-mapping xmlns="urn:mustang-mapping" controlgettertype="Mustang.Parse.WebControlGetter, Mustang">
<object name="Page" type="KoalaExample.QuickStart, KoalaExample">
<property controlid="lblUserID" name="SysUser.UserID" convertertype="Koala.ResourceConverter, Koala" />
<property controlid="lblUserName" name="SysUser.UserName" convertertype="Koala.ResourceConverter, Koala" />
<property controlid="lblLoginID" name="SysUser.LoginID" convertertype="Koala.ResourceConverter, Koala" />
</object>
</mustang-mapping>
映射文件的说明见:http://microsheen.cnblogs.com/archive/2005/08/29/225575.html
3)在页面进行绑定,大概内容如下:
protected void InitialEntity()
{
if (this.CurrentLanguage == Koala.Language.Chinese)
{
this.btnLanguage.Text = "中文";
this.CurrentLanguage = Koala.Language.English;
}
else
{
this.btnLanguage.Text = "English";
this.CurrentLanguage = Koala.Language.Chinese;
}
}
protected void ToUI()
{
this.UIService.BindObjectToUI(this, "Page");
}
部署说明:
1)请保证asp.net帐号对解压后KoalaExample\resource及其子文件夹有完全访问的权限。这里面有多语言的资源包
源码和例子下载: Koala1.0.0.0