Hi,
I am looking at how to make a program multilingual. In this case Dutch and English. I made 2 resource files and you can switch languages with the function "SetLanguageMenuItem ()". Because I have put the language switching in a separate class I have to adapt the modifier of the components on the main screen from private to internal. This seems right to me. How can that be better?
In the main form:
private void SetLanguageMenuItem()
{
if (JsonObjSettings.AppParam[0].Language == "en-US")
{
ToolStripMenuItemLanguageEnglish.Checked = true;
ToolStripMenuItemLanguageDutch.Checked = false;
cul = CultureInfo.CreateSpecificCulture("en-US");
}
else if (JsonObjSettings.AppParam[0].Language == "nl-NL")
{
ToolStripMenuItemLanguageEnglish.Checked = false;
ToolStripMenuItemLanguageDutch.Checked = true;
cul = CultureInfo.CreateSpecificCulture("nl-NL");
}
SwitchLanguage sl = new SwitchLanguage(this, cul);
sl.SetLanguage();
}
The separate class:
public class SwitchLanguage
{
ResourceManager res_man; // Declare Resource manager to access to specific cultureinfo
CultureInfo cul; // Declare culture info
public FormMain Parent { get; set; }
public SwitchLanguage(FormMain Parent, CultureInfo cul)
{
res_man = new ResourceManager("TopData.Resource.Res", typeof(FormMain).Assembly);
this.cul = cul;
this.Parent = Parent;
}
public void SetLanguage()
{
System.Windows .Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor;
//MainForm menu
//oolStripMenuItemLanguage.Text = res_man.GetString("Language", cul);
Parent.ToolStripMenuItemProgram.Text = res_man.GetString("MainForm_Menu_Program", cul);
Parent.ToolStripMenuItemChangeUser.Text = res_man.GetString("MainForm_Menu_Program_Switch_user", cul);
Parent.ToolStripMenuItemClose.Text = res_man.GetString("MainForm_Menu_Program_Exit", cul);
Parent.ToolStripMenuItemMaintain.Text = res_man.GetString("MainForm_Menu_Manage", cul);
Parent.ToolStripMenuItemMaintainQueries.Text = res_man.GetString("MainForm_Menu_Manage_Queries", cul);
Parent.ToolStripMenuItemMaintainDbConnections.Text = res_man.GetString("MainForm_Menu_Manage_Connections", cul);
Parent.ToolStripMenuItemmaintainUsers.Text = res_man.GetString("MainForm_Menu_Manage_Users", cul);
Parent.ToolStripMenuItemMaintainQueryGroups.Text = res_man.GetString("MainForm_Menu_Manage_QueryGroups", cul);
Parent.ToolStripMenuItemOptions.Text = res_man.GetString("MainForm_Menu_Options", cul);
Parent.ToolStripMenuItemConfigure.Text = res_man.GetString("MainForm_Menu_Options_Settings", cul);
Parent.ToolStripMenuItemLanguage.Text = res_man.GetString("MainForm_Menu_Options_Language", cul);
Parent.ToolStripMenuItemLanguageDutch.Text = res_man.GetString("MainForm_Menu_Options_Language_NL", cul);
Parent.ToolStripMenuItemLanguageEnglish.Text = res_man.GetString("MainForm_Menu_Options_Language_EN", cul);
Parent.ToolStripMenuItemAbout.Text = res_man.GetString("MainForm_Menu_Options_Language_Info", cul);
System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default;
}
}
Greetings, Hans