Dynamische Übersetzung von Bildschirmlabels für Mehrsprachigkeit


#1

Eine Möglichkeit besteht darin, zur Laufzeit die Controls auf dem Bildschirm durchzugehen und die Texte auszutauschen.

Beispielscript für das Ereignis “HostDataChange”

// check if datatable is already loaded 
DataTable trans = null; 
if (Tag != null) trans = Tag as DataTable;
else
{
  trans = ML.DB2.GetDataTable($"select * from mldemo.translate");
  Tag = trans;
}

// replace text
foreach (DataRow row in trans.Rows)
{
  var english = row["ENGLISH"].ToString();
  foreach (Control control in ControlList)
  if (control.Text == english)
	control.Text = row["GERMAN"].ToString();
}

Script für einfache Übersetzungstabelle

CREATE TABLE MLDEMO/TRANSLATE(
ENGLISH VARCHAR(100) NOT NULL WITH DEFAULT, 
GERMAN VARCHAR(100) NOT NULL WITH DEFAULT)