MVC 5 本地化工作在 localhost 但不是服务器

MVC 5 localization working on localhost but not server

我尝试创建一个基于资源文件的多语言 mvc 网站。 我在 youtube 上找到了这个视频,它解释了这个概念并给出了一些示例代码:https://youtu.be/oGeAYd3idBc

现在的问题是。它可以在本地主机上运行,​​但是如果我将它上传到我的服务器上,它就无法运行。

在这一点上我开始了很多研究。我找不到太多,我找到并尝试过的一切都没有用。

许多解决方案建议尝试将 web.config 中的全球化 culture/uiCulture 设置为自动。这也没有用。

在我的索引页面上,我输出了当前的文化 (CultureInfo.CurrentCulture.Name)。 在本地主机上,如果用户设置了他的语言,它就会改变。但是在我的服务器上它总是英文的。

所以我希望你理解我的问题。

现在我的代码:

web.config

<system.web>
<globalization culture="auto" uiCulture="auto"></globalization>  
</system.web>

index.cshtml

@using System.Globalization

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<div class="pushContent"></div>
<div class="container">
    <div class="row">
        <ul>
            <li>@Html.ActionLink("English", "Change", "Language", new { LanguageAbbrevation = "en" }, null)</li>
            <li>@Html.ActionLink("German", "Change", "Language", new { LanguageAbbrevation = "de-DE" }, null)</li>
        </ul>
    </div>
    <div class="row">
        <p>
            CurrentCulture is now @CultureInfo.CurrentCulture.Name
        </p>
    </div>
</div>
<div class="pushFooter"></div>

语言控制器

public ActionResult Change(string LanguageAbbrevation)
        {
            if (LanguageAbbrevation != null)
            {
                CultureInfo.CurrentCulture.ClearCachedData();
                CultureInfo culture;
                culture = CultureInfo.CreateSpecificCulture(LanguageAbbrevation);

                CultureInfo.DefaultThreadCurrentCulture = culture;
                CultureInfo.DefaultThreadCurrentUICulture = culture;
            }

            HttpCookie cookie = new HttpCookie("Language");
            cookie.Value = LanguageAbbrevation;
            cookie.Expires = DateTime.MaxValue;
            Response.Cookies.Add(cookie);

            return View("Index");
        }

Global.asax.cs

protected void Application_BeginRequest(object sender, EventArgs e)
        {
            HttpCookie cookie = HttpContext.Current.Request.Cookies["Language"];

            if(cookie != null && cookie.Value != null)
            {
                CultureInfo.CurrentCulture.ClearCachedData();
                CultureInfo culture;
                culture = CultureInfo.CreateSpecificCulture(cookie.Value);

                CultureInfo.DefaultThreadCurrentCulture = culture;
                CultureInfo.DefaultThreadCurrentUICulture = culture;
            }
            else
            {
                CultureInfo.CurrentCulture.ClearCachedData();
                CultureInfo culture;
                culture = CultureInfo.CreateSpecificCulture("en");

                CultureInfo.DefaultThreadCurrentCulture = culture;
                CultureInfo.DefaultThreadCurrentUICulture = culture;
            }
        }

一些可能有帮助的屏幕截图。

我发现 "solution"...我知道它很傻,但我不知道。

似乎如果您使用资源进行本地化,它会创建一个额外的 YOURPROJECT.resources.dll,位于 /bin/de-DE/(在我的例子中)。

您还必须上传此 文件夹/.dll