MonoRail学习笔记二十:资源文件的使用和多语言支持

简介:
-

和ASP.NET一样,MonoRail也可以方便的使用资源文件,以及利用资源文件来实现多语言的支持。
主要是利用了ResourceLocalizationFilter这两个属性,具体使用方法如下:

1、使用资源文件
Controller代码:

    [Resource( " resx " " TestSiteNVelocity.Controllers.ResourceFile " )]
    
public   class  ResourcedController : SmartDispatcherController
    
{
        
public void GetResources()
        
{
        }

    }
Resource属性第一个参数resx是用来在vm中使用的,第二个参数指定要使用的资源文件的名称,这个例子中使用的是程序集 TestSiteNVelocity.Controllers中的ResourceFile文件。

vm代码:
$resx.testKey
然后再加入ResourceFile.resx和ResourceFile.zh-cn.resx两个资源文件,都包含名称为testKey的键值
那么在中文环境下浏览就会显示ResourceFile.zh-cn.resx里面定义的值,在英文或其他环境下浏览时就会显示ResourceFile.resx里面定义的值

另外还可以使用如下方式:
    [Resource( " resx " " TestSiteNVelocity.Controllers.ResourceFile " , CultureName = " zh-cn " )]
来强制指定使用中文的资源文件,即ResourceFile.zh-cn.resx

2、结合LocalizationFilter属性实现多语言
Controller代码:
    [Resource( " resx " " TestSiteNVelocity.Controllers.ResourceFile " )]
    [LocalizationFilter(Castle.MonoRail.Framework.Filters.RequestStore.Cookie, 
" locale " )]
    
public   class  ResourcedController : SmartDispatcherController
    
{
        
public void GetResources()
        
{
        }


        
public void SetLanguage(String langCode)
        
{
            Response.CreateCookie(
"locale", langCode);

            RedirectToAction(
"GetResources");
        }

    }

vm代码:
$resx.testKey

< form method = " post "  action = " SetLanguage.rails "  id = " form1 " >
< select name = " langCode "  onchange = " document.getElementById('form1').submit(); " >
    
< option value = "" ></ option >
    
< option value = " zh-cn " > 中文 </ option >
    
< option value = " en " > English </ option >
</ select >
</ form >

浏览效果如下:

就可以动态的选择语言了
解释:
当选择下拉列表中的一个语言后,调用Controller中的SetLanguage方法,将选择的语言放入cookie中,cookie名为:locale,然后重新进入此页面。进入此页面时由LocalizationFilter属性决定根据cookie中的locale的值来设定当前的本地化。
当然这里LocalizationFilter属性也可以根据SessionCookieQueryStringFormParams中的值来决定本地化
 


    本文转自永春博客园博客,原文链接:http://www.cnblogs.com/firstyi/archive/2007/11/21/967369.html,如需转载请自行联系原作者


相关文章
|
存储 开发工具
游戏编程之十六 扩展(DDEX2和DDEX3)
游戏编程之十六 扩展(DDEX2和DDEX3)
83 0
|
JavaScript 前端开发 程序员
用Unity不会几个插件怎么能行?Unity各类插件及教程推荐
话说工欲善其事必先利其器,程序员总是有一些开发利器,而对于Unity3D开发程序员来说,插件就是非常好用的利器。 今天博主,就将比较好用的插件推荐给大家,希望一起学习品鉴。
|
定位技术
从0开发游戏引擎之 序言(引擎内主要模块)
从0开发游戏引擎之 序言(引擎内主要模块)
|
JavaScript 前端开发 算法
JS魔法堂:不完全国际化&本地化手册 之 实战篇
最近加入到新项目组负责前端技术预研和选型,其中涉及到一个熟悉又陌生的需求——国际化&本地化。熟悉的是之前的项目也玩过,陌生的是之前的实现仅仅停留在"有"的阶段而已。趁着这个机会好好学习整理一下,为后面的技术选型做准备。  本篇将于大家一起挽起袖子撸代码:)
5754 0
|
自然语言处理 Java 测试技术
重拾《 两周自制脚本语言 》- 支持中文标识符
为《 两周自制脚本语言 》添加中文标识符支持.
1023 0
|
Java
重拾《 两周自制脚本语言 》- 中文关键字与原生函数
为《 两周自制脚本语言 》添加中文关键字与原生函数
1118 0
|
存储 JavaScript 前端开发
JavaScript 编程精解 中文第三版 十六、项目:平台游戏
十六、项目:平台游戏 原文:Project: A Platform Game 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 部分参考了《JavaScript 编程精解(第 2 版)》 所有现实都是游戏。
1158 0