Multi-Language Support


Overview

New in v1.2 Dashboard & editing in v1.7

Slotara ships with complete UI translations for 8 popular languages. Every panel β€” Super Admin, Business, and the public-facing booking pages β€” is fully translated. Users switch language with a single click from the header; the choice is stored in their session and takes effect immediately without a page reload.

Since v1.7, every UI string is served from a single per-language source file and can be viewed, searched, and edited directly from the Translation Dashboard β€” no file editing or redeploy required. You can also add or remove whole languages from the same screen.

Language switcher dropdown showing all 8 supported languages

Supported Languages

Code Language Native Name
en English English
es Spanish EspaΓ±ol
de German Deutsch
fr French FranΓ§ais
ar Arabic Ψ§Ω„ΨΉΨ±Ψ¨ΩŠΨ©
ru Russian Русский
zh Chinese (Simplified) δΈ­ζ–‡
hi Hindi ΰ€Ήΰ€Ώΰ€¨ΰ₯ΰ€¦ΰ₯€

All 8 languages cover the full interface: navigation, form labels, validation messages, button text, notifications, and email template subject lines.


Translation Dashboard

New in v1.7 Admin β†’ System β†’ Translations

The Translation Dashboard (/admin/translations) is a single screen for viewing and editing every translation string in the app. Super admins can review coverage, translate missing strings, and manage languages without touching the codebase.

What you can do:

  • See coverage at a glance β€” each language shows a completion percentage against the English source (English is always 100%). A language chip turns green when it is enabled in the switcher.
  • Edit strings inline β€” open a language, browse its strings grouped by file, and type translations directly. Filter to Missing or Translated and search within a file. Click Save to persist.
  • Global search across everything β€” the search box at the top matches on the key, the English text, and the translated text, across all files at once β€” so you can search in the target language too (e.g. type a Hindi phrase to find its entry). Edit and Save changes straight from the results.
  • Add a language β€” the Add Language button scaffolds a new locale from the English source (pick from a preset list or enter any ISO code) and optionally enables it in the switcher immediately. No config file editing.
  • Enable / disable a language for the public switcher, or delete a language and all its files, from the same page.

{info} Edits made in the dashboard are written straight to the language files on disk and take effect immediately β€” no cache clear or redeploy needed.

{primary} The editor always shows the English string alongside each field as a reference, so translators never lose the original context.


Managing Enabled Languages

Admin β†’ Settings β†’ System β†’ Language Management

Super admins can control which languages are active platform-wide from a single checkbox list.

To change enabled languages:

  1. Go to Admin β†’ Settings β†’ System.
  2. Scroll to the Language Management section.
  3. Check or uncheck languages as needed β€” at least one must remain checked.
  4. Click Save Settings.

The change takes effect immediately across every panel and public page without any cache clear or deploy. Disabled languages disappear from:

  • The language switcher in the Admin Panel, Business Panel, and front-end nav.
  • The Default Language selector in a business's own settings.
  • The locale.switch endpoint (a request to switch to a disabled locale is silently rejected).

{info} Disabling a language only hides it from the UI β€” its translation files remain on disk. Re-enabling it restores it immediately.

{warning} If a user has a disabled language saved as their profile locale, they will fall back to the app default (en) on their next session.


Switching the Language

The language switcher lives in the top-right header of every panel (shown as a two-letter locale code, e.g. EN, ES, DE).

  1. Click the locale badge in the header.
  2. A dropdown lists all available languages.
  3. Click any language β€” the panel switches instantly.
Language switcher in the Business Panel showing available languages

The selected language is stored in the user's session, so it persists across page navigations until changed or until the session expires.


Where It Applies

Area Translated?
Super Admin Panel (/admin) βœ… Full UI
Business Panel (/manage) βœ… Full UI
Public Booking Page (/{slug}) βœ… Full UI
Email notifications βœ… Subject lines
Validation error messages βœ… Yes
API responses β€” (English only)

{info} The language switcher controls the panel UI language. It does not change the content your business has entered (service names, descriptions, etc.) β€” those are business-controlled.


Adding or Modifying Translations

For most changes, use the Translation Dashboard β€” edit strings inline and add or remove languages from the UI, with no file editing or redeploy. The rest of this section covers the underlying file layout for anyone who prefers to edit on disk or manage translations in version control.

File layout

Changed in v1.7

As of v1.7, the interface strings are consolidated into a single JSON file per language at the root of lang/, keyed by the English source text:

lang/
  en.json      ← English (source of truth β€” keys are the English strings)
  es.json      ← Spanish
  de.json      ← German
  fr.json      ← French
  ar.json      ← Arabic
  ru.json      ← Russian
  zh.json      ← Chinese
  hi.json      ← Hindi
  en/ es/ …    ← a few framework/group files (e.g. installer.php, auth.php)

Earlier versions kept many small PHP files per locale (lang/en/booking.php, nav.php, pages.php, …). These were consolidated into the JSON files to give one source of truth per language and remove duplicated strings. A handful of PHP group files remain for the installer and framework/validation messages.

To edit an existing translation on disk, open the language's JSON file (e.g. lang/fr.json) and change the value for the matching key:

{
    "Book now": "RΓ©server maintenant"
}

No cache clear is required for JSON language files. (If you edit one of the remaining PHP group files, run php artisan cache:clear.)

To add a new language manually:

  1. Copy lang/en.json to lang/<code>.json using the ISO 639-1 code (e.g. lang/pt.json) and translate the values.
  2. Enable it under Admin β†’ Settings β†’ System β†’ Language Management (or from the Translation Dashboard).

{info} The Add Language button on the Translation Dashboard does all of the above for you β€” copying the source file and enabling the locale in one step.

{primary} RTL support β€” Arabic (ar) is automatically rendered right-to-left, and any other right-to-left locale is detected and rendered the same way.