我正在尝试为学术项目创建一个asp.net mvc3项目,其中一个要求是它必须能够在不同语言之间进行更改。目前我所拥有的是以下内容:
我有一个外部项目,作为语言的存储库,每个视图我都有一个界面,每个视图定义所有“占位符”确定所有可更改的文本。 在任何操作开始时,我获取uri中的语言(类似于/ {lng} / {command} / {action})并使用ViewBag将其传递给视图,一旦在视图内部,我将存储库用于以所选语言获取该视图的接口的当前实现。
我找不到关于这个问题的任何好话题。我只是好奇,如果有更好的方法来做到这一点,效率更高。它是如何在专业水平上完成的。 我对asp.net在一个月前开始学习它的经验不是很熟悉。
此外,如果重要的是我使用剃刀引擎进行视图,并且我们不能在项目的这个阶段使用任何JavaScript。
答案 0 :(得分:10)
您可以浏览following guide。
答案 1 :(得分:2)
我正在使用一个名为Griffin.MvcContrib的项目,该项目具有一些本地化功能。
首先,我使用查询字符串和cookie来切换语言。 (只需在布局<a href="@Url.Action("Index")?lang=en-us">English</a>
)中创建一个带有标记的链接
并使用我的属性标记您的控制器:
[LocalizedAttribute]
public class YourController : Controller
{
}
接下来是获取视图,模型和验证消息的本地化。
模型和验证的本地化是described here。至于视图,您只需使用@T()
来获取翻译文本:
@Model.Title
<div>@T("This text will get translated")</div>
(您需要将Views \ Web.config中的pageBaseType更改为Griffin.MvcContrib.GriffinWebViewPage
)
我差不多完成了一个管理区域,任何非技术用户都可以用来管理所有翻译。在此处查看Griffin.MvcContrib.Admin
项目:https://github.com/jgauffin/griffin.mvccontrib/tree/localization/source/Griffin.MvcContrib.Admin