I18n_Lib is a lightweight internationalization library for OutSystems Reactive Web and Mobile apps. Translations live in JSON files loaded at runtime — add or update languages without redeploying.
How it works
App starts ? InitTranslation loads default JSON ? Screen opens ? LoadScreenResource loads screen JSON ? Translate expressions render text
Key Features
Client Actions
Usage Example
Expression:
Translate("common.welcome", "Welcome", UserName)
Output (English): Welcome, AhmedOutput (Arabic): ??????? Ahmed
Interpolation:
Translate("order.status", "Order %{opt1} is %{opt2}", OrderId + "," + Status)
No ghost dependency needed — because Translate is an Expression, it re-evaluates on render, and the library forces a render when translations load or the locale changes. Do not pass CurrentLocale or TranslationRevision.
JSON File Structure
/locales/ default/ (loaded at app start) en-US.json ar-SA.json dashboard/ (lazy-loaded per screen) en-US.json ar-SA.json profile/ en-US.json ar-SA.json
Flat vs nested JSON
// Pure flat { "dashboard.title": "Dashboard", "status.active": "???" } // Pure nested { "dashboard": { "title": "Dashboard" }, "status": { "active": "???" } }
Wrapper v1.5.1 · OutSystems 11+ Reactive Web & Mobile.