C#:设置 CultureInfo 时出现国际化问题 Class
C# :Problem With Internationalization when setting the CultureInfo Class
我正在尝试实现一个国际化库。我创建了它并且运行良好,但我遇到了一个问题。
public static void SetCurrentLanguage(字符串语言)
{
if (m_resourceManager == null)
{
CultureInfo cultInfo = new CultureInfo(language);
Thread.CurrentThread.CurrentCulture = cultInfo;
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
m_resourceManager = ResourceManager.CreateFileBasedResourceManager("Globalization", m_path, null);
}
上面的函数用两个不同的函数调用了两次。当从第一个函数调用它时,我们设置 CurrentLanguage(de-DE) 并且它运行良好。
但是当我们第二次调用该函数时,它给出了 (en-EN) 的结果,因为第二次未设置文化,因为 m_resourceManager 不为空。
我想要的是,如果我第一次设置 cultureInfo class 和第二次调用的 de-DE 语言,也应该设置它。
我卡在这一点上了。谁能帮我解决这个问题?
提前致谢
你能把这个方法重新安排成这样吗?
public static void SetCurrentLanguage(string language) {
CultureInfo cultInfo = new CultureInfo(language);
Thread.CurrentThread.CurrentCulture = cultInfo;
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
if (m_resourceManager == null)
{
m_resourceManager = ResourceManager.CreateFileBasedResourceManager("Globalization", m_path, null);
}
}
因此,您只需在资源管理器为 null 时创建它,但每次调用该函数时仍会更改 cultureinfo。
我正在尝试实现一个国际化库。我创建了它并且运行良好,但我遇到了一个问题。 public static void SetCurrentLanguage(字符串语言) {
if (m_resourceManager == null)
{
CultureInfo cultInfo = new CultureInfo(language);
Thread.CurrentThread.CurrentCulture = cultInfo;
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
m_resourceManager = ResourceManager.CreateFileBasedResourceManager("Globalization", m_path, null);
}
上面的函数用两个不同的函数调用了两次。当从第一个函数调用它时,我们设置 CurrentLanguage(de-DE) 并且它运行良好。 但是当我们第二次调用该函数时,它给出了 (en-EN) 的结果,因为第二次未设置文化,因为 m_resourceManager 不为空。
我想要的是,如果我第一次设置 cultureInfo class 和第二次调用的 de-DE 语言,也应该设置它。
我卡在这一点上了。谁能帮我解决这个问题?
提前致谢
你能把这个方法重新安排成这样吗?
public static void SetCurrentLanguage(string language) {
CultureInfo cultInfo = new CultureInfo(language);
Thread.CurrentThread.CurrentCulture = cultInfo;
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
if (m_resourceManager == null)
{
m_resourceManager = ResourceManager.CreateFileBasedResourceManager("Globalization", m_path, null);
}
}
因此,您只需在资源管理器为 null 时创建它,但每次调用该函数时仍会更改 cultureinfo。