如何在运行时更改当前的资源管理器以切换语言?

Jef*_*ham 5 .net c# localization visual-studio

我有一个C#应用程序,我试图通过使用资源管理器引用不同的resx文件使其支持多种语言.

我在Designer.cs中有这个代码:

        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
    public static global::System.Resources.ResourceManager ResourceManager {
        get {
            if (object.ReferenceEquals(resourceMan, null)) {
                global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("project.resources.en-US", typeof(resources.en-US).Assembly);
                resourceMan = temp;
            }
            return resourceMan;
        }
    }
Run Code Online (Sandbox Code Playgroud)

如何在不修改Designer.cs代码的情况下切换System.Resources.ResourceManager("project.resources.en-US", typeof(resources.en-US).Assembly)System.Resources.ResourceManager("project.resources.it-IT", typeof(resources.it-IT).Assembly)运行时?可能吗?

这个问题是相关的

编辑:为了澄清,我意识到我不应该更改我的设计器代码,但我正在努力使其能够访问不同的resx文件.如果我的问题措辞不好,我道歉,但我想我并不完全明白我在说什么.我正在研究卫星装配.

Dav*_*ita 3

只需更改当前的文化信息即可完成工作。System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");

  • 这很简单。CurrentUiCulture 保存当前线程的区域设置。如果将其设置为 ru-RU,它将从当前线程的俄语资源文件加载数据,而不是整个应用程序。还有CurrentCulture属性,它负责全球化任务,例如小数点分隔符、货币等。看看 http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.aspx <-- 这里 (2认同)