【问题标题】:Localization (Change culture globally)本地化(全球改变文化)
【发布时间】:2021-11-19 08:40:50
【问题描述】:

我尝试使用 razor pages 和 PageModels(没有控制器)更改 asp.net 核心中的语言,但问题是我的本地化仅适用于 Pages/Index Page。当我尝试在其他页面上切换语言时,它由他们的 OnPost 方法处理并获得 NullPointer。

  <div class="dropdown-menu" aria-labelledby="navbarDropdown">
    
        @foreach (var culture in cultureItems)
            {
    
                <form id="selectLanguage" asp-page="/" asp-route-returnUrl="@Context.Request.Path"
                                                          method="post" class="form-horizontal" role="form">
                    <input class="dropdown-item  waves-effect waves-light" type="submit" name="culture" value="@culture.Value" />
    
                </form>
            }

</div>

我的处理方法:

public void OnPost(string culture, string returnUrl)
    {
        Response.Cookies.Append(
                                                   CookieRequestCultureProvider.DefaultCookieName,
                                                   CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)),
                                                   new CookieOptions { Expires = DateTimeOffset.UtcNow.AddYears(1) }
                                               );

        return LocalRedirect(returnUrl ?? "/");
    }

                                   

【问题讨论】:

    标签: asp.net-core localization razor-pages


    【解决方案1】:

    首先,我强烈建议我们看看this

    如果所有这些信息让我们有点不知所措,...那么我认为简短会有所帮助。

    全球化和本地化通常旨在为应用程序提供多种语言,为了实现这一目标,它利用

    • 一种检测请求语言的方法

    Http 通信被设计为无状态的,因此,没有内置的方法来跟踪诸如语言之类的东西。它必须是附加到 Http 请求的某种信息,通常在 Accept-Language 标头中。我们可以根据需要使用 cookie。

    • 处理该语言的机制

    在我们知道请求语言之后,使用一些东西让应用知道,整个请求的当前文化应该是满足语言的东西。在这种情况下,负责确保CurrentCultureCurrentUICulture 的中间件被设置为我们想要的。

    • 应用用来翻译内容的一些资源

    通常会使用一些扩展名为resx 的资源文件,将其视为字典,我们在其中以我们网站支持的许多其他语言定义apple。然后机制会处理剩下的事情。

    AFAIK,这是几乎所有框架都遵循的总体思路。以及如何实现它在上面的文档中已经清楚地表达了。给它一些时间,事情应该会很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-18
      • 1970-01-01
      相关资源
      最近更新 更多