gpt4 book ai didi

c# - 根据请求动态更改语言资源的好方法

转载 作者:太空狗 更新时间:2023-10-29 18:18:52 24 4
gpt4 key购买 nike

我有一个 ASP.NET Web API 应用程序,它应该对用户的 Accept-Language header 做出适当的 react 。

目前,字符串存储在 resx 中,并通过 Visual Studio 生成的类以编译安全的方式访问。我想做的是保持当前的方法并为每个翻译版本的 resx 创建附属程序集。然后分析用户的 Accept-Language header 以查看用户接受哪些语言并从附属程序集中加载所请求语言的资源。

我想我可以通过在 ResourceSet 的帮助下创建一组特定于语言的 ResourceManager 对象来自己实现所有这些行为,但是这样就不可能了保持编译时安全,因为 Visual Studio 负责自动更新 resx 文件的类。

动态选择本地化语言资源的最佳方式是什么?

最佳答案

通过阅读您的问题,我没有看到 ASP.NET 没有自动提供的任何内容。您可以将 ASP.NET(无论是 WebForms 还是 MVC)配置为使用 accept-language 请求 header 并设置适当的 UICulture(这将影响 ResourceManager 加载的附属程序集)和 Culture(这将适本地影响依赖于语言环境的格式和解析,例如日期和数字)。

要将您的应用配置为使用 accept-language 列表为每个请求设置 UICulture 和 Culture(根据 this MSDN page),请像这样配置您的 web.config:

<globalization uiCulture="auto" culture="auto" />

每页也有等效的配置设置。

然后,根据 Resource Fallback过程中,如果您的应用包含匹配文化(或者,如果没有,则包含其父中性文化)的附属程序集,资源管理器将使用它。如果不是,那么将使用您的默认资源(如果您的基本语言是英语)。

关于c# - 根据请求动态更改语言资源的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11078242/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com