Isha Labs Support

Language Management

Updated Oct 18, 2026

Quizora has a fully integrated i18n system. All 9 built-in languages ship pre-translated. From the Translation Dashboard you can add new languages, edit any translation token in the browser, control the language switcher per portal, and support RTL scripts like Arabic โ€” all without touching a single file.


Built-in Languages

The following languages are installed and fully translated out of the box:

Flag Language Locale code Direction
๐Ÿ‡ฌ๐Ÿ‡ง English en LTR
๐Ÿ‡ฎ๐Ÿ‡ณ Hindi hi LTR
๐Ÿ‡ฉ๐Ÿ‡ช German de LTR
๐Ÿ‡ซ๐Ÿ‡ท French fr LTR
๐Ÿ‡ณ๐Ÿ‡ฑ Dutch nl LTR
๐Ÿ‡ฉ๐Ÿ‡ฐ Danish da LTR
๐Ÿ‡ณ๐Ÿ‡ด Norwegian no LTR
๐Ÿ‡ธ๐Ÿ‡ช Swedish sv LTR
๐Ÿ‡ฏ๐Ÿ‡ต Japanese ja LTR

Translation Dashboard

Navigate to Admin โ†’ Translation Dashboard (/admin/translation-dashboard).

The dashboard shows:

  • Stats bar โ€” total installed locales, average coverage across all files, total English source keys
  • Language tabs โ€” click a tab to switch to that locale's translation view; each tab has an enable/disable toggle and a delete button
  • File list โ€” each PHP translation file (quiz.php, common.php, creator.php, admin.php) with a coverage percentage badge
  • Inline editor โ€” click the edit icon next to any file to open the key-by-key translation editor

Inline Translation Editor

Click the pencil icon (โœ๏ธ) next to any translation file to open the inline editor. You can update any translation key without leaving the browser.

The editor shows three columns:

Column Content
Key Dot-notation key, e.g. quiz.start_exam
English Source string (read-only reference)
Translation Editable field for the current locale โ€” highlighted when changed

Click Save Translations to write changes directly to the PHP file on disk (e.g. lang/de/quiz.php). No deploy or server restart needed.


Adding a New Language

You can add any of 90+ world languages from a searchable picker. Quizora auto-fills the flag emoji, native name, and RTL direction, then creates stub translation files from the English template.

  1. Go to Admin โ†’ Translation Dashboard and click + Add Language
  2. Type to search (e.g. Arabic, Spanish, Chinese) in the searchable dropdown
  3. Select your locale โ€” flag emoji, native name, and RTL toggle are auto-filled
  4. Click Add Language. Stub files are created in lang/{code}/ using English strings as placeholders
  5. The new locale is immediately active in the language switcher and editable in the dashboard

Translation coverage: After adding a language, files show 0% coverage โ€” stubs are English placeholders. Use the inline editor to translate key by key, or edit the files in lang/{code}/ directly.


Enabling & Disabling Languages

The enable/disable toggle on each language tab controls whether that locale appears in the language switcher. Disabled locales are still installed and editable โ€” they just won't show in the dropdown for users.

This is useful if you've added a language but haven't finished translating it yet.


Language Switcher โ€” Per-Panel Control

The language switcher can be independently shown or hidden per portal. Go to Admin โ†’ Settings โ†’ Languages:

Setting What it controls
Show switcher โ€” Admin panel The language button in the Filament Admin topbar
Show switcher โ€” Creator panel The language button in the Filament Creator topbar
Show switcher โ€” Customer portal The language button in the customer-facing navbar

Common setup: If your platform targets a single-language market, disable the switcher on the Customer portal but keep it on Admin / Creator so operators can switch for testing.


RTL Language Support

When a user switches to an RTL language (Arabic, Hebrew, Urdu, Farsi, etc.), Quizora automatically sets dir="rtl" on the `` element. This triggers Tailwind's built-in rtl: utility variants across the entire customer portal.

  • The Customer portal uses Tailwind rtl: variants for padding, margins, flexbox direction, and text alignment
  • The Admin and Creator panels use Filament's built-in RTL support
  • Any locale added via the locale picker that has RTL flagged will automatically set dir="rtl" โ€” no extra configuration needed

Note: If you add a custom RTL locale manually (by editing files), also tick the RTL toggle in the Add Language modal, or add its code to the rtl_locales setting in the database.


Deleting / Hiding a Language

  • Custom locales you added โ€” click the Delete (โœ•) button on the locale's tab. This removes lang/{code}/ and the locale from the database. Cannot be undone.
  • Built-in locales โ€” toggle the enable/disable switch to hide them from the switcher. The files remain on disk. You can re-enable at any time.

Translation File Structure

Each locale lives in lang/{code}/ with four PHP files:

lang/
  en/
    common.php    โ€” shared UI: nav, buttons, flash messages
    quiz.php      โ€” quiz listing, detail, exam panel, results
    creator.php   โ€” creator dashboard, AI generator, earnings
    admin.php     โ€” admin panel labels, settings, reports
  de/
    common.php
    quiz.php
    creator.php
    admin.php
  (one folder per locale โ€ฆ)

Each file returns a PHP array of 'key' => 'Translated string' pairs. Keys are nested (e.g. quiz.start_exam maps to $array['quiz']['start_exam']). The inline editor handles nesting transparently โ€” you edit the flat dot-key, it writes the correct nested PHP array.