gpt4 book ai didi

c# - .NET 本地化

转载 作者:行者123 更新时间:2023-11-30 15:42:41 26 4
gpt4 key购买 nike

我正在开发一个支持多语言环境的应用程序。

这是通过一个单独的 dll 完成的,该 dll 为每种语言提供一个资源,每个资源存储一个字符串到特定语言的翻译。

这在 WPF 应用程序上工作得很好,每次应用程序需要一个字符串时,都会向 dll 发出请求,它会根据在应用程序上选择的语言返回文本。如果更改了语言,则从语言 dll 返回的文本反射(reflect)了更改。

现在我在 ASP.Net 中使用 MVC 创建一个网站,该网站使用相同的语言 dll。

问题是语言 dll 上的资源管理器,据我所知,总是返回系统文化的文本。我更改了资源管理器使用的文化信息,但它没有工作。

有人知道我该如何解决这个问题吗?谢谢

更新:这么晚才回复很抱歉。周末无法访问互联网...这是我第一次有一个项目对 Web 和 Windows 使用相同的 dll,我希望行为相同,但事实并非如此。基本上我有一个存储用户和应用程序设置的全局类,其中之一是当前的 cultureinfo,当用户更改它时,语言管理器更新是当前的 cultureinfo 变量。当我调用代码以获取语言字符串时,

resmgr.GetString(label, ci);

其中resmgr 是语言管理器的ResourceManager 对象,ci 是cultureinfo 对象,label 是我想要获取的字符串,它返回标签/语言的文本。我有一个项目支持的每种文化的 resx 文件和一个不变/默认的在 Windows 应用程序中工作正常,但在网络上和我所做的一些单元测试中却没有,即使我将 ci 值更改为新的文化,结果始终是相同的,来自不变文化的字符串。我试图改变当前的线程文化和当前的用户界面文化,但没有成功

更新 2:为什么资源管理器方法 GetResourceSet 为传入 wpf 应用程序的文化返回正确的资源集,但单元测试或 Web 中的相同代码返回不变的资源集。我错过了一些东西,只是不知道它是什么....

更新 3:由于使用了 IOC 并且因为语言项目不是引用而是在完成编译时复制到文件夹,我发现为每个资源创建的文件夹没有被复制到单元测试debug文件夹和网站bin文件夹。我更正了这一点,现在正在复制文件,但问题仍然存在。

最佳答案

查看此 multipart tutorial ,因为它是一个相当广泛的主题。

关于c# - .NET 本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7285414/

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