我添加了新的 Rosource 文件 UserNotification.resx。然后我添加了两个文件进行本地化,并将其命名为 UserNotification.hr-HR.resx 和 UserNotification.sl-SI.resx。 (以下线程:如何在 C# 中使用本地化 https://stackoverflow.com/questions/1142802/c-sharp-localization-really-confusing-me)
然后我将 Windows 语言更改为“si”。如果我使用打印当前文化System.Globalization.CultureInfo.CurrentCulture.ToString()
输出 si sl-SI
但是,我总是从 UserNotification.resx 中获取一个字符串。接缝它无法识别本地化资源文件。
如果您使用多线程,.NET 本地化中的问题是您需要为生成的每个线程手动设置区域性(以防它与 Windows 区域性不同,以防用户可以选择所需的语言)。它不是从主线程继承的。
创建新线程之后、启动之前,您应该将其文化设置为主线程的文化(通常使用 Windows 的默认文化)。
所以,系统表现出了良好的CurrentCulture。但当前线程说了什么?也许应用程序由于某种原因以不同的文化启动,这就是它加载默认资源文件的原因?不管怎样,你没有理由不手动设置当前的文化。大多数情况下,当您想要为用户提供更改应用程序语言的选项时,您需要这样做。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)