それがあなたに役立つかどうかはわかりませんが、これが私がしたことです。マネージC++/ clrで記述されているため、c#に簡単に変換できます。私は翻訳プロセスを管理するために少しヘルパーcalsを書きました
(これで実行時に言語を変更できます!フォーム全体が即座に翻訳されます。)
ref class LanguageSwitcher
{
public:
/// <summary>
/// Change language at runtime in the specified form
/// </summary>
[System::Runtime::CompilerServices::Extension]
static void SetLanguage( Form ^form, CultureInfo ^lang )
{
//Set the language in the application
System::Threading::Thread::CurrentThread->CurrentUICulture = lang;
ComponentResourceManager ^resources = gcnew ComponentResourceManager( form->GetType() );
ApplyResourceToControl( resources, form->MainMenuStrip, lang );
ApplyResourceToControl( resources, form, lang );
form->Text = resources->GetString( "$this.Text", lang );
}
private:
static void ApplyResourceToControl( ComponentResourceManager ^resources, Control ^control, CultureInfo ^lang )
{
for each( Control ^c in control->Controls )
{
ApplyResourceToControl( resources, c, lang );
String ^text = resources->GetString( c->Name + ".Text", lang );
if( text != nullptr )
c->Text = text;
}
}
static void ApplyResourceToControl( ComponentResourceManager ^resources, MenuStrip ^menu, CultureInfo ^lang )
{
if(menu != nullptr)
for each( ToolStripItem ^m in menu->Items )
{
String ^text = resources->GetString( m->Name + ".Text", lang );
if( text != nullptr )
m->Text = text;
}
}
};
使用方法は次のとおりです。
System::Globalization::CultureInfo^ lang = cli::safe_cast<System::Globalization::CultureInfo^ >(langCombo->SelectedItem);
LanguageSwitcher::SetLanguage(this,lang);
お役に立てれば!