Skip to content

Internationalization Updates - UI5 Application

Overview

This document describes the comprehensive internationalization (i18n) updates made to the UI5 application to replace hardcoded English strings with translatable text entries loaded dynamically from the central translation files.

Translation Files Updated

1. _i18n/messages.properties (English)

Added 14 new error-related translation keys:

  • error.handlerInvalid = Handler called without a valid controller
  • error.handlerAction = Pressed from
  • error.handlerException = An error occurred while processing the action
  • error.connectionFailed = Failed to establish connection
  • error.modelNotFound = Model not found
  • error.hanaModelNotFound = HANA model not found
  • error.logModelNotFound = Log model not found
  • error.initializationFailed = Failed to initialize
  • error.controlNotFound = {0} control not found
  • error.commandNotConfigured = Command not configured
  • error.httpError = HTTP {0}: Internal Server Error
  • error.processingMessage = Error processing WebSocket message
  • error.generic = An error occurred
  • error.appInitFailed = Failed to initialize application

2. _i18n/messages_*.properties (Translations)

Added translations for all 14 new error-related keys in:

  • German (messages_de.properties)
  • Spanish (messages_es.properties)
  • French (messages_fr.properties)
  • Japanese (messages_ja.properties)
  • Korean (messages_ko.properties)
  • Portuguese (messages_pt.properties)
  • Simplified Chinese (messages_zh.properties)
  • Hindi (messages_hi.properties)
  • Polish (messages_pl.properties)

3. UI Bundle Files (All Languages)

Centralized UI5 application bundles were added under _i18n and served via /i18n:

  • systemInfo.properties and translated variants
  • tables.properties and translated variants
  • inspect.properties and translated variants
  • massConvert.properties and translated variants

Code Files Updated

1. app/resources/common/controller/handler.js

Changes: Replaced hardcoded error messages with i18n keys

  • "Handler called without a valid controller" → error.handlerInvalid
  • "Pressed from {controllerName}" → error.handlerAction (with parameter substitution)
  • "An error occurred while processing the action" → error.handlerException

2. app/resources/common/controller/BaseController.js

Changes: Updated error fallback messages to use i18n

  • "An error occurred" → error.generic

3. app/resources/massConvert/controller/App.controller.js

Changes: Added I18N_KEYS object and replaced hardcoded strings

  • Added 5 new i18n key mappings
  • "Log model not found" → error.logModelNotFound
  • "Error processing WebSocket message:" → error.processingMessage
  • "Failed to establish connection" → error.connectionFailed
  • "Output model not found" → error.modelNotFound

4. app/resources/massConvert/Component.js

Changes: Updated error handling to use i18n

  • "Log model not found in Component initialization" → error.logModelNotFound

5. app/resources/systemInfo/controller/App.controller.js

Changes: Replaced hardcoded error messages

  • "HANA model not found" → error.hanaModelNotFound
  • "Failed to initialize systemInfo controller:" → error.initializationFailed with parameter

6. app/resources/inspect/controller/App.controller.js

Changes: Added I18N_KEYS and replaced error messages

  • "Failed to initialize application" → error.appInitFailed

7. app/resources/inspect/controller/querySimple-ui.controller.js

Changes: Added I18N_KEYS object and error handling

  • "Command not configured" → error.commandNotConfigured
  • "HTTP {status}: Internal Server Error" → error.httpError (with parameter)

8. app/resources/inspect/controller/inspectTable-ui.controller.js

Changes: Added I18N_KEYS and parameterized error messages

  • "TableInspectTable control not found" → error.controlNotFound (with parameter)
  • "Command not configured" → error.commandNotConfigured
  • "HTTP {status}: Internal Server Error" → error.httpError (with parameter)

9. app/resources/inspect/controller/inspectView-ui.controller.js

Changes: Added I18N_KEYS and parameterized error messages

  • "ViewInspectView control not found" → error.controlNotFound (with parameter)
  • "Command not configured" → error.commandNotConfigured
  • "HTTP {status}: Internal Server Error" → error.httpError (with parameter)

10. app/resources/tables/controller/App.controller.js

Changes: Added I18N_KEYS object

  • "HTTP {status}: Internal Server Error" → error.httpError (with parameter)

i18n Implementation Pattern

All controllers follow this pattern for internationalization:

javascript
// Define translation keys
const I18N_KEYS = {
    ERROR_KEY: "error.specificError",
    // ... more keys
};

// In methods:
const resourceBundle = this.getResourceBundle();
const message = resourceBundle.getText(I18N_KEYS.ERROR_KEY, [param]);
MessageToast.show(message);

Benefits

  1. Complete Localization Support: All user-facing error messages can now be easily translated
  2. Centralized Management: All messages are managed in one place per language
  3. Parameterized Messages: Support for dynamic substitution (e.g., control names, HTTP status codes)
  4. Consistent Pattern: All controllers follow the same i18n pattern
  5. Easy Maintenance: Adding new messages requires only updating the property files
  6. Multi-language Ready: Translations included for German, Spanish, French, Japanese, Korean, Portuguese, Simplified Chinese, Hindi, and Polish; easy to add more languages

How to Add New Translations

  1. Add new key-value pair to _i18n/messages.properties
  2. Add corresponding translations to all language variants (_de, _es, _fr, _ja, _ko, _pt, _zh, _hi, _pl)
  3. Reference the key in your JavaScript code using resourceBundle.getText("key.name")
  4. For parameterized messages, pass an array as the second parameter

How to Add New Languages

  1. Create a new properties file: _i18n/messages_[language_code].properties
  2. Copy all entries from messages.properties and translate them
  3. The framework will automatically use the correct language based on user locale

Testing Recommendations

  • Test with both English and German language settings
  • Verify that error messages appear with correct translations
  • Check parameterized messages with different values
  • Test console logging to ensure non-user-facing logs still function correctly