using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading;
|
using System.Reflection;
|
using System.Resources;
|
using System.Globalization;
|
using System.Windows.Forms;
|
|
namespace HalconTools
|
{
|
class ResourceCulture
|
{
|
///
|
/// Set current culture by name
|
///
|
/// name
|
public static void SetCurrentCulture(string name)
|
{
|
if (string.IsNullOrEmpty(name))
|
{
|
name = "en-US";
|
}
|
Thread.CurrentThread.CurrentCulture = new CultureInfo(name);
|
}
|
///
|
/// Get string by id
|
///
|
/// id
|
/// current language string
|
public static string GetString(string id)
|
{
|
string strCurLanguage = "";
|
try
|
{
|
ResourceManager rm = new ResourceManager("HalconTools.Resources.Resource", Assembly.GetExecutingAssembly());
|
CultureInfo ci = Thread.CurrentThread.CurrentCulture;
|
strCurLanguage = rm.GetString(id, ci);
|
}
|
catch
|
{
|
//strCurLanguage = "No id:" + id + ", please add.";
|
strCurLanguage = "";
|
}
|
return strCurLanguage;
|
}
|
|
public static string formName;
|
|
public static void SetLanguage(System.Windows.Forms.Control control)
|
{
|
if (control.GetType().BaseType.Name == "Form")
|
{
|
formName = control.Name;
|
control.Text = GetString(control.Name);
|
}
|
|
|
for (int i = 0; i < control.Controls.Count; i++)
|
{
|
switch (control.Controls[i].GetType().Name)
|
{
|
|
case "Label":
|
|
case "Button":
|
|
case "CheckBox":
|
|
case "RadioButton":
|
|
case "LinkLabel":
|
|
control.Controls[i].Text = GetString(
|
|
formName + control.Controls[i].Name);
|
|
break;
|
|
case "GroupBox":
|
|
control.Controls[i].Text = GetString(
|
|
formName + control.Controls[i].Name);
|
|
SetLanguage(control.Controls[i]);
|
|
break;
|
|
case "Panel":
|
|
SetLanguage(control.Controls[i]);
|
|
break;
|
|
case "TabControl":
|
|
TabControl tbc = (TabControl)control.Controls[i];
|
|
for (int j = 0; j < tbc.TabCount; j++)
|
{
|
|
tbc.TabPages[j].Text = GetString(
|
|
formName + tbc.TabPages[j].Name);
|
|
SetLanguage(tbc.TabPages[j]);
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
}
|
}
|