Źródło: https://wpinplate.com/dokumentacja/menu-w-kilku-jezykach/

# Menu w kilku językach

Turysta albo gość z zagranicy zamawia w swoim języku: widzi menu, okno dania, koszyk i formularz zamówienia po angielsku (albo w innym języku, który włączysz), a potwierdzenie zamówienia dostaje e-mailem w tym samym języku. Kuchnia, KDS, kurier i etykiety pracują dalej w Twoim języku – zamówienie zapisuje się w języku podstawowym.

Funkcja jest wbudowana w WP InPlate – nie potrzebujesz wtyczek do tłumaczeń ani osobnych kopii produktów. Jedno danie ma jedną cenę, jeden stan magazynowy i jedną kartę w KDS, a tylko jego teksty mają tłumaczenia.

## W skrócie

1. Włącz **Użyj wielojęzycznej strony** i wybierz języki: **InPlate → Ustawienia → System → Tłumaczenia**.
2. Przetłumacz menu: **InPlate → Tłumaczenia** albo **KDS → Manager → Tłumaczenia**.
3. Opcjonalnie dodaj darmowy klucz DeepL – ekran Tłumaczenia podpowie brakujące tłumaczenia.

Nie musisz tłumaczyć wszystkiego naraz. Brak tłumaczenia nie psuje menu – klient widzi wtedy tekst w języku podstawowym.

## Włączanie języków

**InPlate → Ustawienia → System → Tłumaczenia** → **Użyj wielojęzycznej strony**. Po włączeniu pojawiają się:

- **Język podstawowy** to język strony (**Ustawienia → Ogólne → Język witryny**). W nim prowadzisz menu, a kuchnia, KDS i etykiety zawsze go używają.
- **Dodatkowe języki dla klientów** – zaznacz te, w których chcesz przyjmować zamówienia, i zapisz. Języki z gwiazdką (angielski, ukraiński) mają w WP InPlate przyciski i komunikaty. W pozostałych treści menu są w wybranym języku, a przyciski i komunikaty – po angielsku.
- **Przełącznik języka nad menu i w formularzu zamówienia** – włączony; wyłącz go, jeśli wstawiasz przełącznik sam, np. w nagłówku (zobacz [Przełącznik języka](#przełącznik-języka-w-nagłówku)).
- **Klucz DeepL (opcjonalnie)** – zobacz [Podpowiedzi DeepL](#podpowiedzi-deepl).

Po zapisaniu przełącznika i pierwszego języka pojawiają się:

- przełącznik języka nad menu i w formularzu zamówienia,
- ekran **InPlate → Tłumaczenia** i zakładka **KDS → Manager → Tłumaczenia** (KDS – po odświeżeniu),
- ramka **Tłumaczenia (WP InPlate)** przy edycji produktu.

**Wyłączenie** „Użyj wielojęzycznej strony” przywraca jeden język: znikają przełączniki, ekran Tłumaczenia i ramka przy produkcie, a klienci widzą wszystko w języku podstawowym. Wybrane języki i wpisane tłumaczenia zostają zapisane – po ponownym włączeniu wszystko wraca.

Jeśli WordPress nie ma jeszcze pakietu wybranego języka (np. ukraińskiego), ekran pokaże ostrzeżenie. Menu i komunikaty WP InPlate będą wtedy w tym języku, ale teksty WordPressa i WooCommerce w e-mailach do klienta – po angielsku. Pakiet pobierzesz w **Ustawienia → Ogólne → Język witryny**: wybierz język, zapisz i przywróć poprzedni – pobrany pakiet zostaje.

## Przełącznik języka w nagłówku

Nad menu i w formularzu zamówienia przełącznik jest od razu. Jeśli wolisz mieć go w nagłówku strony (albo na innej stronie), wstaw blok **InPlate – Przełącznik języka** albo shortcode `[wp-inplate-language-switch]` – w motywie Kadence do elementu **HTML** nagłówka. Potem wyłącz **Przełącznik języka nad menu i w formularzu zamówienia**, żeby klient nie widział dwóch. Szczegóły: [Bloki i shortcode'y](/dokumentacja/bloki-i-shortcody/#przełącznik-języka).

## Jaki język widzi klient

- **Pierwsza wizyta:** język przeglądarki, jeśli go włączyłeś. Gdy nie – angielski (jeśli włączony), a gdy i jego nie ma – język podstawowy.
- **Przełącznik** nad menu i w formularzu zamówienia, np. **PL · EN · UA**. Wybór przeglądarka zapamiętuje na kolejne wizyty.
- **Link z językiem:** dopisz do adresu `?lang=en_US`, np. `https://twojlokal.pl/menu/?lang=en_US` – strona otworzy się po angielsku. Przydaje się na ulotce dla turystów albo w kodzie QR. Kody: `en_US` (angielski), `uk_UA` (ukraiński), `de_DE` (niemiecki), `cs_CZ`, `sk_SK`, `lt_LT`, `fr_FR`, `es_ES`, `it_IT`, `nl_NL`, `sv_SE`, `hu_HU`, `ro_RO`, `pt_PT`.
- **Koszyk w nagłówku motywu** (mini-koszyk WooCommerce, np. wysuwany koszyk w Kadence): dania, dodatki i napisy WooCommerce („Subtotal”, „Checkout”) – w języku klienta. Tytuł panelu i napis na przycisku koszyka ustawia motyw, więc zostają w języku strony. Koszyk w całości w języku klienta daje blok **Koszyk** WP InPlate – zobacz [Bloki i shortcode'y](/dokumentacja/bloki-i-shortcody/#koszyk).
- **Strona podziękowania** po zamówieniu i szczegóły zamówienia w **Moim koncie** – w języku, w którym klient złożył zamówienie.
- **E-maile do klienta** o zamówieniu (przyjęcie, gotowe do odbioru, w drodze, zakończenie) – w języku zamówienia; kod logowania – w języku strony, na której klient o niego poprosił. E-maile do lokalu (nowe zamówienie) – w języku podstawowym.

Zespół widzi wszystko w języku podstawowym, także gdy w tej samej przeglądarce zamawiał po angielsku: KDS, Manager, aplikacja kuriera i panel WordPress nie używają języka klienta.

## Co tłumaczysz

| Teksty | Rodzaj na ekranie Tłumaczenia |
|---|---|
| Nazwy, krótkie opisy, opisy i **Skład** dań – także dań InPlate | Dania |
| Nazwy i opisy kategorii | Kategorie |
| Znaczniki produktów | Znaczniki |
| Dodatki z szablonów i dodatki wpisane przy daniu: nazwy, grupy, opcje | Dodatki |
| Rozmiary: nazwa wyboru (np. „Rozmiar”) i nazwy rozmiarów – raz dla całego zestawu | Rozmiary |
| Własne alergeny (14 alergenów z rozporządzenia jest przetłumaczonych) | Alergeny |
| Własne nazwy metod realizacji, napis przy niedostępnym daniu, nazwa opłaty za opakowanie, zgody klienta | Teksty |

Przyciski, komunikaty, nazwy statusów i treść e-maili są w WP InPlate gotowe po angielsku i ukraińsku – ich nie tłumaczysz.

Nie tłumaczy się: motyw i zwykłe strony WordPressa (menu nawigacji, tytuły stron, stopka, tytuł i przycisk koszyka w nagłówku motywu), napisy wpisane ręcznie w ustawieniach bloków (np. tytuł sprawdzania dostawy), strona płatności WooCommerce i ekrany TV.

## Ekran Tłumaczenia

**InPlate → Tłumaczenia** (i **KDS → Manager → Tłumaczenia**) pokazuje wszystkie teksty dla klienta z tłumaczeniem obok:

- **wybór języka** – gdy włączyłeś więcej niż jeden,
- **postęp** – ile tekstów przetłumaczono, ilu brakuje i ile czeka na sprawdzenie,
- **filtry** – **Do zrobienia** (brakujące i do sprawdzenia), **Brak tłumaczenia**, **Do sprawdzenia**, **Przetłumaczone**, **Wszystkie**; rodzaj tekstu (Dania, Kategorie, Dodatki…) i wyszukiwarka.

Każdy wiersz ma tekst w języku podstawowym i pole na tłumaczenie. Zmiany zbierają się, a zapisujesz je razem przyciskiem na dole ekranu, np. **Zapisz 3 zmiany** (**Odrzuć zmiany** cofa wszystko niezapisane). Przy opisach z formatowaniem możesz wpisać zwykły tekst – akapity zostaną zachowane.

**Do sprawdzenia:** gdy zmienisz tekst w języku podstawowym (np. nazwę dania), jego tłumaczenie trafia do **Do sprawdzenia**. Klient nadal je widzi – lepsze to niż nic. Popraw tłumaczenie albo kliknij **Tłumaczenie nadal pasuje**.

Zapisywanie tłumaczeń wymaga aktywnej licencji – zobacz [Licencja](/dokumentacja/licencja/).

### Przy edycji produktu

Ramka **Tłumaczenia (WP InPlate)** w bocznym panelu edycji produktu pokazuje, ile tekstów dania przetłumaczono w każdym języku. Link **Tłumacz** otwiera ekran Tłumaczenia z tekstami tylko tego dania (z jego dodatkami).

## Podpowiedzi DeepL

Z kluczem DeepL ekran Tłumaczenia wypełnia brakujące tłumaczenia jednym kliknięciem. Nic się nie zapisuje samo – czytasz propozycje, poprawiasz i zapisujesz.

1. Załóż darmowe konto **DeepL API Free** na deepl.com (500 000 znaków miesięcznie – wystarczy na całe menu, także po zmianach).
2. Skopiuj klucz (**Authentication Key**) i wklej go w **Ustawienia → System → Tłumaczenia → Klucz DeepL**. **Sprawdź klucz** pokaże, ile znaków wykorzystano w tym miesiącu. Zapisz ustawienia.
3. Na ekranie Tłumaczenia kliknij **Podpowiedz brakujące (DeepL)** – wypełni pola brakujących tłumaczeń z listy na ekranie (najwyżej 400 naraz; zawęź listę filtrem, a potem kliknij ponownie).

Propozycje są oznaczone **Propozycja DeepL – sprawdź przed zapisem**. Do DeepL trafiają tylko teksty menu (nazwy dań, opisy, dodatki), nigdy dane klientów i zamówień. Bez klucza nic nie jest nigdzie wysyłane. Klucz nie wraca do przeglądarki po zapisaniu – **Usuń klucz** usuwa go przy kolejnym zapisie ustawień.

Gdy DeepL odrzuci klucz, skończy się limit albo usługa nie odpowiada, zobaczysz komunikat z przyczyną.

## Plik CSV dla tłumacza

Jeśli menu tłumaczy ktoś inny, przekaż mu plik:

1. **Eksportuj CSV** – plik z kolumnami `type`, `id`, `field`, `group`, `label`, `base` (tekst w języku podstawowym) i kolumną języka, np. `en_US`. Otworzysz go w Excelu, LibreOffice albo Arkuszach Google (kodowanie UTF-8).
2. Tłumacz wpisuje tłumaczenia w ostatniej kolumnie. Kolumn `type`, `id` i `field` nie wolno zmieniać.
3. **Importuj CSV** – zapisuje tłumaczenia z wypełnionych komórek. Pusta komórka zostawia dotychczasowe tłumaczenie. Wiersze dań usuniętych w międzyczasie są pomijane – import nigdy nie tworzy dań ani nie zmienia tekstów w języku podstawowym.

## Zamówienie, kuchnia i faktury

- Zamówienie zapisuje się w języku podstawowym: nazwy dań, dodatki, opłaty i dostawa. Dlatego KDS, aplikacja kuriera, etykiety, panel WooCommerce i faktury są zawsze w Twoim języku.
- Zamówienie pamięta język klienta – z niego korzystają e-maile do klienta i strona podziękowania.
- Alergeny w e-mailu klienta są w jego języku, w zamówieniu zostają w języku podstawowym.

## Strony z pamięcią podręczną (cache)

Stronę menu i stronę zamówienia wyklucz z buforowania, jak opisują [Informacje techniczne](/dokumentacja/informacje-techniczne/#cache). Jeśli inne strony z WP InPlate (np. z blokiem koszyka albo sprawdzania dostawy) są buforowane, a klient dostanie zapamiętaną stronę w innym języku niż wybrany, strona sama przejdzie raz na adres z `?lang=…` – każdy język ma wtedy własny adres.

## Kolejny język

Języki z listy w **Ustawienia → System → Tłumaczenia** możesz włączyć od razu: treści menu tłumaczysz na ekranie Tłumaczenia, a przyciski i komunikaty są wtedy po angielsku. Pełne przyciski i komunikaty w nowym języku (np. niemieckim) dodajemy w kolejnych wersjach WP InPlate – napisz do nas, jeśli go potrzebujesz. Szczegóły techniczne: [Informacje techniczne](/dokumentacja/informacje-techniczne/#dodawanie-języka).
