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

本文介绍了如何在MonoRail中使用资源文件实现多语言支持的方法。通过Resource和LocalizationFilter属性,可以轻松实现动态语言切换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

-

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

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

[Resource("resx","TestSiteNVelocity.Controllers.ResourceFile")]
publicclassResourcedController:SmartDispatcherController
{
publicvoidGetResources()
{
}

}
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")]
publicclassResourcedController:SmartDispatcherController
{
publicvoidGetResources()
{
}


publicvoidSetLanguage(StringlangCode)
{
Response.CreateCookie(
"locale",langCode);

RedirectToAction(
"GetResources");
}

}

vm代码:
$resx.testKey

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

浏览效果如下:

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

 

 

欢迎加入:http://www.itpob.cn/bbs

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值