~~鱼跃~~

I Want to fly!

导航

一个多语言实现方案(Koala1.0.0.0 ,采用Mustang1.0.0.0)

Posted on 2006-03-14 08:00  flyfish  阅读(177)  评论(0编辑  收藏  举报

http://microsheen.cnblogs.com/archive/2005/08/30/225684.html
摘要:目前,面向国际或一些本地的跨国公司的软件和项目越来越多,这些系统往往要求实现多语言显示界面,所以实现多语言方案也是很有必要的。本方案中语言内容和界面采用了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