Skip to content

LeanShell Texts ​

The shell around your apps — the rail, the Weave menus, the shell's own buttons and messages — follows the request's language like everything else. Its texts come from three places.

Rail labels: each app's bundle ​

Every navigable artifact declares its texts under route.<key>.* in its own bundle; the label is required (the route.* contract). Labels resolve per app, from the app's bundle, in the request's language.

ui5:nav compiles one build of the navigation per language that any app's bundle offers, plus one for the base bundle. A request picks its language, then English, then the base: de-AT reads de, a language no bundle offers reads en. Only the base bundle (i18n.properties) must carry every label; author the keys in every locale file you ship (i18n_en.properties, i18n_de.properties, …), or that language shows the English text.

Which copy of the bundle is read ​

A packaged app is read from its published resources/ui5/i18n/. An app under a workspace source is read from webapp/ in the browser and from dist/ on the command line, so the keys you just typed into webapp/ are invisible to ui5:nav until the app is built:

bash
# 1. author the keys in webapp/i18n/*.properties
npm run build                        # 2. webapp/ -> dist/
php artisan ui5:app <Name> --refresh # 3. dist/ -> the module's resources/
php artisan ui5:nav                  # 4. compile the navigation cache

Weave menus: the contributing app's bundle ​

A doorway's text is weave.<concept>.label, read from the bundle of the app that declares the #[Weave], the one that owns the page, not from the hub, which has never seen that app's bundle. The registry resolves it in every language the bundle offers when it is built, and the shell picks the request's language. A key missing from the base bundle stops the build (LUX Weave).

The shell's own texts ​

The LeanShell's buttons, dialogs and messages, and the SDK's own messages such as the reasons an intent is refused, live in the SDK's library, com.laravelui5.sdk. They ship in German and English. You do not write them; a message of yours lives in your app's bundle (Actions & Messages).

When the language is wrong ​

The rail and the Weave menus follow the request's language, which Core's ResolveRequestLanguage sets. A host whose ui5.middleware lacks it serves the base bundle to everyone; see Configuration.