IoT Cloud has three independent localization layers.
Stored in code files. Resolved by the Nette localization extension based on URI language, with English as fallback.
Managed centrally in DBM. Includes static languages and additional custom locales.
Used for dynamic translations of entity names/descriptions across the entire platform (DBM, instances, groups, devices, templates) — except project-level physical columns.
Each language has: locale, fallback, default flag.
Resolution order: translation for selected locale → fallback locale → default locale → raw column value.
Some tables support a JSON settings column and a parallel translates column for localized overrides of specific fields.
Project-specific. Independent from global languages (but can share locale codes).
Key behavior:
name becomes name_cs_cz + name_en_us)TRANSLATEDEach project language has: mandatory flag, default, fallback.
When creating OT from a localized template, matching locale translations are automatically applied.
A related system stores dynamic enumerations in the database, resolved similarly to global languages but used for enum values rather than localization.