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; } } } } }