Displays Localization (Reference) enables multi-language support for HMI applications, allowing runtime language switching with automatic translation of display strings, alarm messages, and system text.
Localization provides:
Enable different text elements for translation based on application requirements.
Setting | Translates | Location |
---|---|---|
Alarm Messages | Alarm text | Alarms → Items → Message |
Display Strings | UI text | Display objects with Localize enabled |
System Messages | Platform messages | System dialogs and prompts |
Enable at Displays → Localization → Enable Localization
Field | Description | Example |
---|---|---|
Source Language | Original language | English |
Target Language | Translation target | Portuguese |
Load Strings | Import enabled strings | All checked items |
Translate | Use online service | Azure/Google/Libre |
csharp
// Method 1: Direct assignment
@Client.Localization = "EN_PT";
// Method 2: Using method
@Client.SetLocalization("EN_ES");
// Check current dictionary
string current = @Client.Localization;
csharp
// Set culture for formatting
@Client.CultureInfo = "pt-BR"; // Portuguese (Brazil)
@Client.CultureInfo = "en-US"; // English (US)
@Client.CultureInfo = "de-DE"; // German (Germany)
Configure default at Solution → Settings → Culture Info
Property | Description | Type |
---|---|---|
ID | Unique identifier | Auto |
OriginalText | Source string | String |
TranslatedText | Target translation | String |
Disabled | Skip translation | Boolean |
DateCreated | Creation timestamp | DateTime |
DateModified | Last edit time | DateTime |
Description | Translation notes | String |
When Display Strings enabled:
For selective translation:
csharp
// Translate specific string
string translated = @Client.Locale("Original Text");
// In display binding
<TextBlock Text="{Client.Locale('Hello World')}" />
Components requiring special handling:
ComboBox Items:
csharp
public void LocalizeComboBox(ComboBox combo)
{
foreach(var item in combo.Items)
{
item.Text = @Client.Locale(item.Text);
}
}
DataTable Headers:
csharp
public void LocalizeTable(DataTable table)
{
foreach(DataColumn col in table.Columns)
{
col.Caption = @Client.Locale(col.Caption);
}
}
? Display Strings
? Alarm Messages
? System Messages
csharp
// In ClientStartup task
@Client.Localization = "EN_PT";
csharp
// US Format: 3/15/2024
@Client.CultureInfo = "en-US";
// European: 15/03/2024
@Client.CultureInfo = "fr-FR";
// ISO Format: 2024-03-15
@Client.CultureInfo = "invariant";
csharp
// US: 1,234.56
@Client.CultureInfo = "en-US";
// European: 1.234,56
@Client.CultureInfo = "de-DE";
Text not translating:
Wrong formatting:
Missing strings:
Layout issues:
csharp
// Load dictionary from database
DataTable dict = @Dataset.Query.Translations.SelectCommand();
@Client.LoadDictionary(dict);
csharp
// Try primary, then fallback
string text = @Client.Locale("Key") ??
@Client.Locale("Key", "EN") ??
"Default Text";