Languages

Nine languages ship, two of them right-to-left. Choosing which to offer, and what translating actually involves.

Admin → Settings

What ships

LanguageDirectionPDF documents
EnglishLeft to rightIn the language
Español (Spanish)Left to rightIn the language
Français (French)Left to rightIn the language
Nederlands (Dutch)Left to rightIn the language
Русский (Russian)Left to rightIn English
हिन्दी (Hindi)Left to rightIn English
বাংলা (Bengali)Left to rightIn English
اردو (Urdu)Right to leftIn the language
العربية (Arabic)Right to leftIn the language

All nine cover the storefront, every dashboard and every e-mail. The invoices and weekly reports the product draws as PDF files follow the language wherever the bundled PDF engine can draw the script — Latin and Arabic script. For Russian, Hindi and Bengali those two PDF documents are drawn in English; their on-screen and e-mailed versions stay translated.

Enabling them

You choose which to offer. Enable one and there is no language switcher; enable several and the switcher appears in the header — which you can also remove, see Header, Navigation and Footer.

A visitor's language is remembered for their next visit, so somebody who switches to Spanish stays in Spanish.

Offer only what you can support. Enabling Arabic makes the product Arabic, but your own content — menus, page wording, restaurant descriptions — stays in whatever it was written in. A half-translated site reads worse than a single-language one.

Right-to-left is a real layout, not a mirror

Selecting Arabic or Urdu flips the whole interface: sidebars, tables, forms, charts and printed documents. It is a separate stylesheet rather than a transformation, which is why it looks correct rather than reversed.

Arabic and Urdu are rendered with the bundled Arabic-script typeface; Russian, Hindi and Bengali use the fonts the visitor's own system has for those scripts (Segoe UI and Nirmala UI on Windows, Noto Sans on Linux and Android, the system faces on Apple devices). Nothing is fetched from a font service. See Credits & licences.

What is translated and what is not

TranslatedNot translated
Every label, button and message in the product.Menu dishes and descriptions.
Emails, invoices and PDFs.Restaurant names and descriptions.
Built-in page wording, per language — see Pages.Your blog posts and your own pages, unless you write each language.

The built-in content editor is the exception worth knowing: its text is written per language, while images, videos, links and switches are shared across all of them. So a heading can differ by language without maintaining a separate picture for each.

Adding a language of your own

Each language is a single file in lang/ — en.php, es.php, fr.php, nl.php, ru.php, hi.php, bn.php, ur.php, ar.php. A new one is a copy of en.php with the values translated and the keys left alone.

  • Keys are the identifiers. Change one and that string stops resolving.
  • Placeholders must survive. Anything like :count or :name is replaced at runtime and has to remain, spelled exactly.
  • Keep the files in step. A key present in English and missing elsewhere is a gap that shows on screen.
Language files are code, and an update replaces them. The nine shipped files are overwritten when you update. Keep your own additions in a copy you can reapply, and diff against the new English file to find keys that were added — see Updating to a new version.

When it doesn't work

Some text stays in English

Either it is your own content, which the product does not translate, or a key is missing from that language file and it fell back to English.

The switcher is not showing

Either only one language is enabled at Admin → Settings → General, or the Language element is switched off at Admin → Header.

Arabic or Urdu layout looks broken after an update

A right-to-left stylesheet did not come across. Confirm the whole assets folder was replaced.

A placeholder prints literally

A translated string lost or renamed it. Compare that key against the English file.