Back

LanguageToggle

Server-side i18n Demo

Select a language below. A cookie is set and the page reloads — the server detects the cookie and re-renders with translated content.

Language

Hello! 👋

Welcome to the mljr-ui component showcase.

This content is rendered server-side based on your selected language.

Switch languages using the dropdown above. Your preference is saved as a cookie and the page reloads to apply the new locale server-side.

Current locale cookie: en

Client-side Only (localStorage)

Persists in localStorage. Dispatches locale-change event.

Custom Language List

Listening for Changes

Selected: EN

Usage

// 1. Create a ui/i18n context bridge in your app:
//
//    func middleware(next echo.HandlerFunc) echo.HandlerFunc {
//        return func(c echo.Context) error {
//            locale := localeFromCookie(c) // "en", "de", …
//            ctx := i18n.WithLocale(c.Request().Context(), locale)
//            ctx  = i18n.WithT(ctx, myTranslateFunc(locale))
//            // pass ctx to your templ render call
//        }
//    }
//
// 2. Inside any templ component, call i18n.T(ctx, "key"):
//
//    {{ greeting := i18n.T(ctx, "greeting") }}
//    <h1>{ greeting }</h1>
//
// 3. Use SetCookie+Reload to bridge client selection → server cookie:

@actions.LanguageToggle(actions.LanguageToggleProps{
    Default:    "en",
    StorageKey: "ui-locale",
    SetCookie:  true,   // also writes a "locale" cookie
    CookieName: "locale",
    Reload:     true,   // page reload applies new locale server-side
})