M05

Translation and Languages

Dynamic language operations with fallback-safe global delivery.

Language discovery, filtering, and browser-code language resolution patterns that support multilingual data presentation and translation-aware module behavior.

LanguagePicker.jsxtsx
import { Lookup, Select } from '@cleen/cleen-components';
import { useLanguages, useUserLanguage } from '@/hooks/useLanguages';

export function LanguagePicker() {
  const { languages, loading } = useLanguages();
  const { current, setCurrent } = useUserLanguage();

  return (
    <div className="lang-picker">
      <label htmlFor="lang">Display language</label>
      <Select
        id="lang"
        loading={loading}
        value={current}
        onChange={setCurrent}
        options={languages.map((l) => ({ value: l.code, label: `${l.name} (${l.nativeName})` }))}
      />
      <Lookup
        placeholder="Or search 130+ languages…"
        searchKeys={['name', 'nativeName', 'code']}
        items={languages}
      />
    </div>
  );
}

Capabilities

  • Language all/country/filter APIs
  • Browser code to language/edition resolution
  • Fallback to English behavior
  • Translation hooks in content/template flows
  • Language IDs across multiple modules

Benefits

  • Accelerates global rollout
  • Reduces localization breakage
  • Supports large multilingual surfaces

Flow of work

  1. 01Register language catalog
  2. 02Resolve user/browser language
  3. 03Load translated entity content
  4. 04Fallback when unavailable
  5. 05Cache resolved language context

Subfeatures

  • Language all
  • Language by country
  • Language filter
  • Browser-code language resolution
  • Translation fallback
  • Cross-module language IDs
Source surfaces (technical reference)

Internal code areas in the licensed Full-Stack codebase that back this module.

  • ApiLanguage
  • ApiPublic browser code language resolution
  • ApiPublic fallback comments
  • Translation usage across API modules
In the stack

Where it lives. What it exposes.

A quick visual of how Translation and Languages participates across the CleenUI stack, alongside the named operations it adds to the API surface.

M05 · architecture
Frontend
React · TailwindCSS · 60+ components
Language switcherTranslation editorLocale settings
API
C# Web API · production-ready · role-aware
Language listCountry resolverBrowser code lookupTranslation hooks
Database
AzureSQL · 300+ tables · 700+ procedures
LanguagesTranslationsLocaleMappings
Async Services and Batch Jobs
WebJobs & Functions · queue-backed
Translation workerCache warmer
All four layers ship together as the Full-Stack license. M05 blocks are highlighted.
API operations

Named operations on this surface

6
Try these in Postman
  • POSTLanguage all/language/all
  • POSTLanguage by country/language/by-country
  • POSTLanguage filter/language/filter
  • POSTBrowser-code language resolution/language/browser-code-language-resolution
  • POSTTranslation fallback/language/translation-fallback
  • POSTCross-module language IDs/language/cross-module-language-ids

Each operation maps to an endpoint in the licensed C# Web API surface.