Winforms 的winform语言本地化示例

Winforms 的winform语言本地化示例,winforms,localization,Winforms,Localization,我有以下代码在静态模式下转换控件,即通过编写翻译后的字符串(法语、德语等),保存资源文件并调用它。如果我需要动态翻译(包括用户输入),比如说google translator是如何工作的。我需要在离线模式下实现同样的功能。有没有可能访问像谷歌一样的翻译人员,他们可以即时/动态地翻译成所选语言,但离线?或者请给我推荐一种更合适的方法 foreach (Control c in this.Controls) { ComponentResourceManager resourc

我有以下代码在静态模式下转换控件,即通过编写翻译后的字符串(法语、德语等),保存资源文件并调用它。如果我需要动态翻译(包括用户输入),比如说google translator是如何工作的。我需要在离线模式下实现同样的功能。有没有可能访问像谷歌一样的翻译人员,他们可以即时/动态地翻译成所选语言,但离线?或者请给我推荐一种更合适的方法

foreach (Control c in this.Controls)
    {
        ComponentResourceManager resources = new ComponentResourceManager(typeof(MainForm));
        resources.ApplyResources(c, c.Name, new CultureInfo(lang));
    }
-- 当做
Manohar.

我不知道这对你是否有帮助,但以下是我所做的。它是用管理C++ + CLR编写的,你可以很容易地把它翻译成C语言。 我写了一个小助手Cals来管理翻译过程

(您可以在运行时使用此工具更改语言!它将立即翻译整个表单。)

ref类语言切换器
{
公众:
/// 
///在运行时以指定的形式更改语言
/// 
[系统::运行时::编译器服务::扩展]
静态void SetLanguage(Form^Form,CultureInfo^lang)
{
//在应用程序中设置语言
System::Threading::Thread::CurrentThread->CurrentUICulture=lang;
ComponentResourceManager^resources=gcnew ComponentResourceManager(表单->GetType());
ApplyResourceControl(资源,表单->MainMenuStrip,lang);
ApplyResourceControl(资源、表单、语言);
表单->文本=资源->获取字符串($this.Text),lang);
}
私人:
静态无效ApplyResourceControl(组件资源管理器^resources,控件^Control,文化信息^lang)
{
对于每个(控件->控件中的控件^c)
{
ApplyResourceControl(资源、c、语言);
字符串^text=resources->GetString(c->Name+“.text”,lang);
如果(文本!=nullptr)
c->Text=文本;
}
}
静态无效ApplyResourceControl(组件资源管理器^资源,菜单^菜单,文化信息^语言)
{
如果(菜单!=nullptr)
对于每个(菜单->项中的ToolStripItem ^m)
{
字符串^text=resources->GetString(m->Name+“.text”,lang);
如果(文本!=nullptr)
m->Text=文本;
}
}
};
这就是它的使用方式:

System::Globalization::CultureInfo^ lang = cli::safe_cast<System::Globalization::CultureInfo^ >(langCombo->SelectedItem);
LanguageSwitcher::SetLanguage(this,lang);
System::Globalization::CultureInfo^lang=cli::safe\u cast(langCombo->SelectedItem);
LanguageSwitcher::SetLanguage(this,lang);
希望这有帮助

System::Globalization::CultureInfo^ lang = cli::safe_cast<System::Globalization::CultureInfo^ >(langCombo->SelectedItem);
LanguageSwitcher::SetLanguage(this,lang);