您的位置:首页 > 大数据 > 人工智能

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

2007-11-21 22:05 901 查看
-
和ASP.NET一样,MonoRail也可以方便的使用资源文件,以及利用资源文件来实现多语言的支持。

主要是利用了Resource和LocalizationFilter这两个属性,具体使用方法如下:

1、使用资源文件

Controller代码:

[Resource("resx", "TestSiteNVelocity.Controllers.ResourceFile")]

public class ResourcedController : SmartDispatcherController

$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

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属性也可以根据Session、Cookie、QueryString、Form、Params中的值来决定本地化
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: