Menu and offer

Menu in several languages

The menu, cart, order form and customer emails in English, Ukrainian and other languages – turning languages on, the Translations screen, DeepL suggestions and a CSV file for a translator.

Applies to WP InPlate 1.35.2 · Updated:

A tourist or a guest from abroad orders in their own language: they see the menu, the dish window, the cart and the order form in English (or another language you turn on), and they get the order confirmation by email in the same language. The kitchen, the KDS, the courier and the labels keep working in your language – the order is saved in the main language.

The feature is built into WP InPlate – you don't need translation plugins or separate copies of products. A dish has one price, one stock level and one card in the KDS, and only its texts have translations.

In short

  1. Turn on Use a multilingual site and choose the languages: InPlate → Settings → System → Translations.
  2. Translate the menu: InPlate → Translations or KDS → Manager → Translations.
  3. Optionally add a free DeepL key – the Translations screen suggests the missing translations.

You don't have to translate everything at once. A missing translation doesn't break the menu – the customer then sees the text in the main language.

Turning languages on

InPlate → Settings → System → Translations → Use a multilingual site. Once it is on, you see:

  • Main language – the website's language (Settings → General → Site Language). You run the menu in it, and the kitchen, the KDS and labels always use it.
  • Extra languages for customers – tick the ones you want to take orders in and save. Languages with an asterisk (English, Ukrainian) have WP InPlate buttons and messages. In the others the menu content is in the chosen language, and the buttons and messages are in English.
  • Language switcher above the menu and in the order form – on; turn it off if you add the switch yourself, e.g. in the header (see Language switcher).
  • DeepL key (optional) – see DeepL suggestions.

After you save the switch and the first language, these appear:

  • the language switcher above the menu and in the order form,
  • the InPlate → Translations screen and the KDS → Manager → Translations tab (the KDS – after a refresh),
  • the Translations (WP InPlate) box in the product editor.

Turning off “Use a multilingual site” brings back one language: the switches, the Translations screen and the box in the product editor disappear, and customers see everything in the main language. The chosen languages and the translations you entered stay saved – after you turn it on again, everything comes back.

If WordPress doesn't have the chosen language's pack yet (e.g. Ukrainian), the screen shows a warning. The WP InPlate menu and messages will then be in that language, but the WordPress and WooCommerce texts in the customer's emails – in English. You download the pack in Settings → General → Site Language: choose the language, save and switch back to the previous one – the downloaded pack stays.

A language switcher in the header

The switch is there above the menu and in the order form straight away. If you prefer it in the site header (or on another page), add the InPlate – Language switcher block or the [wp-inplate-language-switch] shortcode – in the Kadence theme, in the header's HTML element. Then turn off Language switcher above the menu and in the order form, so customers don't see two. Details: Blocks and shortcodes.

Which language the customer sees

  • First visit: the browser's language, if you turned it on. If not – English (if it is on), and if that isn't on either – the main language.
  • The switch above the menu and in the order form, e.g. PL · EN · UA. The browser remembers the choice for later visits.
  • A link with a language: add ?lang=en_US to the address, e.g. https://yourvenue.com/menu/?lang=en_US – the page opens in English. Useful on a leaflet for tourists or in a QR code. Codes: en_US (English), uk_UA (Ukrainian), de_DE (German), cs_CZ, sk_SK, lt_LT, fr_FR, es_ES, it_IT, nl_NL, sv_SE, hu_HU, ro_RO, pt_PT.
  • The cart in the theme's header (the WooCommerce mini cart, e.g. the slide-out cart in Kadence): dishes, add-ons and WooCommerce texts (“Subtotal”, “Checkout”) – in the customer's language. The panel's title and the text on the cart button are set by the theme, so they stay in the website's language. A cart fully in the customer's language comes with the WP InPlate Cart block – see Blocks and shortcodes.
  • The thank-you page after the order and the order details in My account – in the language the customer ordered in.
  • Emails to the customer about the order (received, ready for pickup, on the way, completed) – in the order's language; the sign-in code – in the language of the page where the customer asked for it. Emails to your venue (new order) – in the main language.

Your team sees everything in the main language, even if they ordered in English in the same browser: the KDS, Manager, the courier app and the WordPress dashboard don't use the customer's language.

What you translate

TextsType on the Translations screen
Names, short descriptions, descriptions and Ingredients of dishes – InPlate dishes tooDishes
Category names and descriptionsCategories
Product tagsTags
Add-ons from templates and add-ons entered on the dish: names, groups, optionsAdd-ons
Sizes: the choice name (e.g. “Size”) and the size names – once for the whole setSizes
Your own allergens (the 14 allergens of the regulation are translated)Allergens
Your own fulfillment method names, the note next to an unavailable dish, the packaging fee's name, customer consentsTexts

Buttons, messages, status names and email content come ready-made in English and Ukrainian in WP InPlate – you don't translate them.

Not translated: the theme and regular WordPress pages (navigation menus, page titles, the footer, the title and button of the cart in the theme's header), texts typed by hand in block settings (e.g. the delivery checker's title), the WooCommerce payment page and TV screens.

The Translations screen

InPlate → Translations (and KDS → Manager → Translations) shows all customer-facing texts with their translations next to them:

  • language choice – when you turned on more than one,
  • progress – how many texts are translated, how many are missing and how many wait to be checked,
  • filters – To do (missing and to check), No translation, To check, Translated, All; the type of text (Dishes, Categories, Add-ons…) and a search field.

Every row has the text in the main language and a field for the translation. Changes are collected, and you save them together with the button at the bottom of the screen, e.g. Save 3 changes (Discard changes undoes everything unsaved). For descriptions with formatting you can type plain text – the paragraphs are kept.

To check: when you change a text in the main language (e.g. a dish's name), its translation goes to To check. The customer still sees it – better than nothing. Correct the translation or click The translation still fits.

Saving translations requires an active license – see License.

In the product editor

The Translations (WP InPlate) box in the product editor's side panel shows how many of the dish's texts are translated in each language. The Translate link opens the Translations screen with the texts of that dish only (with its add-ons).

DeepL suggestions

With a DeepL key the Translations screen fills in the missing translations with one click. Nothing is saved by itself – you read the suggestions, correct them and save.

  1. Create a free DeepL API Free account at deepl.com (500,000 characters a month – enough for a whole menu, also after changes).
  2. Copy the key (Authentication Key) and paste it in Settings → System → Translations → DeepL key. Check the key shows how many characters were used this month. Save the settings.
  3. On the Translations screen click Suggest missing (DeepL) – it fills in the fields of the missing translations in the list on the screen (at most 400 at once; narrow the list with a filter, then click again).

Suggestions are marked DeepL suggestion – check before saving. Only menu texts (dish names, descriptions, add-ons) go to DeepL, never customer or order data. Without a key nothing is sent anywhere. The key doesn't go back to the browser after saving – Remove the key deletes it the next time you save the settings.

When DeepL rejects the key, the limit runs out or the service doesn't respond, you see a message with the reason.

A CSV file for a translator

If someone else translates the menu, give them a file:

  1. Export CSV – a file with the columns type, id, field, group, label, base (the text in the main language) and a language column, e.g. en_US. You open it in Excel, LibreOffice or Google Sheets (UTF-8 encoding).
  2. The translator enters the translations in the last column. The type, id and field columns must not be changed.
  3. Import CSV – saves the translations from the filled-in cells. An empty cell keeps the current translation. Rows of dishes deleted in the meantime are skipped – an import never creates dishes or changes texts in the main language.

Orders, the kitchen and invoices

  • The order is saved in the main language: dish names, add-ons, fees and delivery. That's why the KDS, the courier app, labels, the WooCommerce dashboard and invoices are always in your language.
  • The order remembers the customer's language – the customer emails and the thank-you page use it.
  • Allergens in the customer's email are in their language; in the order they stay in the main language.

Cached pages

Exclude the menu page and the order page from caching, as described in Technical information. If other pages with WP InPlate (e.g. with the cart or delivery checker block) are cached and a customer gets a cached page in a different language than the one they chose, the page switches once by itself to an address with ?lang=… – each language then has its own address.

Another language

You can turn on the languages from the list in Settings → System → Translations straight away: you translate the menu content on the Translations screen, and the buttons and messages are then in English. Full buttons and messages in a new language (e.g. German) come in future WP InPlate versions – write to us if you need one. Technical details: Technical information.