我添加了新的Rosource文件UserNotification.resx。然后我添加了两个用于本地化的文件,并将其命名为UserNotification.hr-HR.resx和UserNotification.sl-SI.resx。 (紧跟线程:How to use localization in C#)
然后我将Windows语言改为“si”。如果我使用System.Globalization.CultureInfo.CurrentCulture.ToString()
输出si sl-SI
但是,我总是从UserNotification.resx获取一个字符串。接缝它无法识别本地化资源文件。
答案 0 :(得分:5)
如果使用多线程,.NET本地化的问题在于,您需要为每个生成的线程设置文化(如果它与windows culture不同,以防用户可以选择所需的语言)。它不是从主线程继承的。
在创建新线程之后,在开始之前,你应该将它的文化设置为主线程的文化(通常使用窗口的默认文化)。
因此,系统显示出良好的CurrentCulture。但是当前线程说的是什么?也许应用程序由于某种原因启动了不同的文化,这就是为什么它加载默认资源文件?无论如何,你没有理由不设定当前的文化。当您想要为用户提供更改应用程序语言的选项时,通常需要这样做。