【问题标题】:mvc .net multilingual applicationmvc .net 多语言应用程序
【发布时间】:2011-07-02 13:20:10
【问题描述】:

我想在 mvc.net 中创建多语言应用程序。我想添加屏幕顶部的标志,以便用户可以更改语言。 请指导我这样做。

谢谢 穆尼什

【问题讨论】:

标签: asp.net-mvc


【解决方案1】:

定义这条路线:

routing.MapRoute(
    "Default",
    "{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = UrlParameter.Optional, lang = "en" }
);

您在顶部的所有标志都应该像这样完成:

<a href="<%= Url.Action(this.ViewContext.RouteData.Values["action"], this.ViewContext.RouteData.Values["controller"], new { lang = "de" }) %>">
    <img scr="..." />
</a>

因此它们将始终以不同的语言指向当前页面。如果您的语言变化是 1:1,这很有用。但是,如果您的语言页面不同,则应始终指向特定语言的主页。

关于翻译,您可以使用资源,也可以将它们存储在数据库中。尽管最近我将静态接口字符串保存在资源文件中,但我过去都使用过。不仅仅是一个,因为它变得过于庞大,而是每个文件一个资源文件,如果它需要的话。这样我确实得到了一些重复的定义(如 OK、Cancel 等),但这样维护起来要容易得多。因为如果你只有一个资源文件,那么事情在哪里发生变化就会变得非常不可预测。

所以我所有需要字符串(即异常消息)的*.cs 文件都有它们的*.resx 伴侣。我的观点也是如此。几乎所有视图都有自己的伴随*.resx,它定义了所有静态内容。

如果您有不止一种语言,则必须为您需要的每种语言提供*.lang.resx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    • 1970-01-01
    • 2012-07-04
    • 2012-03-21
    相关资源
    最近更新 更多