Configuration
Breadcrumbs

Translations

The visible texts in the different modules of the Data Portal and the application messages can be customized by configuring translations for different languages. Whenever new texts are added or new languages are incorporated, it is necessary to register the corresponding translations in the platform.

image-20250915-153753.png
Example of a User Profile where the platform language can be selected

Notes:

  • Metamodel object names do not support translations.

  • If translation keys are missing, they will be visible in the platform; however, they do not prevent normal use.

    image-20250916-102044.png


Translations Table in the Configuration Panel (Administrator view)

The translations visible in the Data Portal (forms, menus, messages, filters, etc.) are stored in the Translations table.

image-20250915-150202.png
Translations table where all platform texts are configured

Structure of the Translations table

Each record represents a translation key in a language:

  • Id: unique identifier of the record. It is automatically assigned from the Configuration Panel.

  • key: translation key.

    • The same key must exist once for each available language.

    • It is not recommended to use metamodel object names as the key (the name field of Object Sub-Types).


  • language: i18n language code; it must exist in Languages (e.g. es-ES, en-US).

  • value: text translated into the language indicated in language.

    • Records with different key values cannot share the same value for translations of reference attributes or metadata.


  • used_for: informational field for classifying/filtering uses (e.g. AUDIT, WORKFLOWS); can be left empty.

  • internal: flag indicating whether the translation is internal Anjana Data text (true) or configuration text such as attributes, menus, roles, etc. (false).

Notes:

  • The combination (key, language) cannot be repeated.

  • The value of language must already exist in the Languages table.

Language translations

The languages in the languages table have their own translations visible from the language selector in the user profile.

image-20250915-162035.png
Translation keys for the languages available in the User Profile


The translation of the i18n code in the key field (e.g.: es-ES) determines the visible name of the language (value) that a user sees when the application is in the language indicated in language.

  • Example: The record with key= es-Es, language= en-US and value= Spanish is used so that, when a user who has the application in American English (language= en-US), they see the translation Spanish (value= Spanish) next to the flag of Spain.

    image-20250915-161237.png
    Translation of es-ES when the user uses the platform with language en-US


  • Example: The record with key= es-Es, language= es-ES and value= Español is used so that, when a user who has the application in Spanish (language= es-ES), they see the translation Español (value= Español) next to the flag of Spain.

    image-20250915-161446.png
    Translation of es-ES when the user uses the platform with language es-ES

Special considerations for translation keys

Certain elements of the Anjana Data configuration require a specific approach when defining translation keys:

  • Infrastructure, Technology and Zone (Triplets)
    The translation keys (key) for the possible values of these attributes must match exactly the parts of the triplet configured in the Tot plugins. These in turn must correspond to the name values in the Attribute Definition Values table.

    image-20250915-163011.png
    • Example: If in the Tot plugin for Azure the following triplet is defined:

      Virtualizador / Denodo / Territorio
      

      then the translation keys (key) must be the following, regardless of the value:

      • infrastructure: Virtualizador

      • technology: Denodo

      • zone: Territorio

Note: The values of these attributes must not contain the characters :, #, ( or ) to avoid interference with Anjana Data internal identifiers.

Important:

If during metadata import in the creation wizard, selecting a triplet shows an error stating “No plugin exists for extract”, the likely cause is that the triplet values in the plugin YAML are not correct for the selected translations. It is advisable to:

  • Check that the key values in the Languages table corresponding to the translations selected in the wizard (value) match the name values in the Attribute Definition Value table.

  • Check that the name values of the Attribute Definition Value table match the values configured in the ari of the plugin YAML.

image-20250916-120410.png


  • Roles
    To translate role names, the translation key must be formed by concatenating the prefix ROLE. with the value of the name column in the Roles table.

    • Example:

      ROLE.architect
      
  • Languages
    To translate language names, the translation key must match the i18n code defined in the Languages table.

    • Example:

      es-ES
      en-US
      fr-FR
      

Internal platform translations

In Anjana Data there are internal translations that are repeated under different keys, as they were generated according to the functionality or screen where they are used.

Important: if you wish to modify an internal translation, it is necessary to update the value in all associated keys within the Translations table.

For example, when changing the translation of the mandatory attribute infrastructure, you must modify both the Infrastructure key in the creation wizard, and the one in the filters, the one in the attribute in the template, and the one in the tooltip in the object header.

Translation keys for mandatory entity/relationship attributes
  • Name

    • COMMON.NAME

    • NEW_WIZARD_ASSISTANT.CARD_NAME

    • labelTranslationKey and placeHolderTranslationKey of the attribute with name = 'name' in anjana.attribute_definition

  • Infrastructure

    • NEW_WIZARD_ASSISTANT.INFRASTRUCTURE

    • TOOLTIP.INFRASTRUCTURE

    • labelTranslationKey and placeHolderTranslationKey of the attribute with name = 'infrastructure' in anjana.attribute_definition

  • Technology

    • NEW_WIZARD_ASSISTANT.TECHNOLOGY

    • TOOLTIP.TECHNOLOGY

    • labelTranslationKey and placeHolderTranslationKey of the attribute with name = 'technology' in anjana.attribute_definition

  • Zone

    • NEW_WIZARD_ASSISTANT.ZONE

    • TOOLTIP.ZONE

    • labelTranslationKey and placeHolderTranslationKey of the attribute with name = 'zone' in anjana.attribute_definition

  • Location

    • NEW_WIZARD_ASSISTANT.PATH

    • TOOLTIP.PATH

    • labelTranslationKey and placeHolderTranslationKey of the attribute with name = 'path' in anjana.attribute_definition

  • Organizational Unit

    • CONTAINER

    • GRAPH.NODE_ORGANIZATIONAL_UNIT

    • MODAL.ORGANIZATIONAL_UNIT

    • TOOLTIP.ORGANIZATIONAL_UNIT

    • FILTERS.ORGANIZATIONAL_UNIT

    • labelTranslationKey and placeHolderTranslationKey of the attribute with name = 'organizationalUnit' in anjana.attribute_definition

  • Position

    • COMMON.POSITION

    • labelTranslationKey and placeHolderTranslationKey of the attribute with name = 'position' in anjana.attribute_definition

  • Physical name

    • COMMON.PHYSICAL_NAME

    • labelTranslationKey and placeHolderTranslationKey of the attribute with name = 'physicalName' in anjana.attribute_definition

  • Source

    • COMMON.SOURCE

    • FORM_RELATION.SOURCE

    • RELATION.SOURCE

    • SOURCE

    • labelTranslationKey and placeHolderTranslationKey of the attribute with name = 'source' in anjana.attribute_definition

  • Destination

    • FORM_RELATION.DESTINATION

    • RELATION.DESTINATION

    • FILTERS.DESTINATION

    • DESTINATION

    • labelTranslationKey and placeHolderTranslationKey of the attribute with name = 'destination' in anjana.attribute_definition

Adding a translation in the Translations table

Adding a new translation involves adding a record to the Translations table.

image-20250915-154735.png
Example of adding the translation for the filter by the Domain attribute

To add a record from the Configuration Panel:

  1. Click the New button in the upper right corner.

  2. Fill in the fields:

    • Key: translation key declared in the corresponding table (Menu, Sections, Attribute Definitions…) (e.g.: FILTERS.DOMINIO).

    • Language: i18n language code for which the translation is being configured (e.g.: es-ES).

    • usedFor: informational text for classifying/filtering uses (e.g.: empty).

    • internal: flag indicating whether the translation is internal or organization configuration. (e.g.: in this case it is own configuration false).

    • value: text visible to the user when they select the language indicated in language. (e.g.: Dominio).

  3. Click Save to save the record or Cancel to discard.

Note: After adding, it is necessary to:

  • Run the Upload Translations Files action from the Configuration Panel (Actions > Upload Translations Files) so that the changes are applied and visible in the Data Portal.

  • Run the Clear cache action from the Configuration Panel (Actions > Clear cache) so that the changes are applied and visible in the Data Portal.

Modifying a translation in the Translations table

Modifying translations is a common operation when it is necessary to adjust the text displayed to the user or update existing terminology.

  • Editable fields:
    The value, usedFor and internal fields can be modified at any time without restrictions. These changes do not affect the system structure; they only update the visible text in the Data Portal or the classification of the translation.

  • Fields not recommended for editing:
    It is not recommended to modify the key or language fields unless the corresponding fields in the configuration tables (Menu, Sections, Attribute Definition, Roles, …) have been modified first.

Note: After modifying, it is necessary to:

  • Run the Upload Translations Files action from the Configuration Panel (Actions > Upload Translations Files) so that the changes are applied and visible in the Data Portal.

  • Run the Clear cache action from the Configuration Panel (Actions > Clear cache) so that the changes are applied and visible in the Data Portal.


Translation Configuration via direct database access (Developer view)

Translations are stored in the portuno.translations table.

Column

Type

Constraints / Notes

id_translations

int4

PRIMARY KEY. Unique identifier.

config_key

varchar(255)

NOT NULL. Translation key. Unique per language in combination with language.

language

varchar(255)

NOT NULL. i18n code (must exist in zeus.languages.i18n_code).

used_for

varchar(255)

Optional. Functional label (e.g. AUDIT, WORKFLOWS).

value

varchar(4000)

NOT NULL. Translated text.

internal

bool

DEFAULT false. true = internal platform text; false = client configuration texts.

Example of translation key configuration:

SQL
INSERT INTO portuno.translations
(id_translations, config_key, "language", used_for, value, internal)
VALUES
  (346, 'COMMON.NAME', 'en-US', NULL, 'Name', true),
  (347, 'COMMON.NAME', 'es-ES', NULL, 'Nombre', true),
  (402, 'WORKFLOWS.TABLE.HEADER_TITLE.NAME', 'en-US', NULL, 'Object name', true),
  (403, 'WORKFLOWS.TABLE.HEADER_TITLE.NAME', 'es-ES', NULL, 'Nombre del objeto', true),
  (550, 'FORM_FIELD.PLACEHOLDER.ENTER_NAME', 'en-US', NULL, 'Enter your name...', true),
  (551, 'FORM_FIELD.PLACEHOLDER.ENTER_NAME', 'es-ES', NULL, 'Introduzca su nombre...', true),
  (582, 'FULL_HISTORY.TABLE.HEADER_TITLE.OBJ_NAME', 'en-US', NULL, 'Object Name', true),
  (583, 'FULL_HISTORY.TABLE.HEADER_TITLE.OBJ_NAME', 'es-ES', NULL, 'Nombre del objeto', true);

Important:

  • Once the insert has been executed, run the sequence update for the table. (From the Configuration Panel under Actions > Reset DQ sequences, the sequences of all tables, including this one, can be updated).

  • The full weight of the configuration logic falls on the developer who executes the SQL queries directly against the tables. It is strongly recommended to carefully review the Table Structure section.