[Intum Pomoc](https://intum.pl/pomoc.md) / [CMS](https://intum.pl/pomoc/cms.md)

# [Witryna w kilku językach](https://intum.pl/pomoc/cms/cms-witryna-w-kilku-jezykach.md)

Ta sama witryna może pokazywać treść w kilku językach: pod osobnymi domenami (`firma.pl`,
`firma.com`), pod jedną domeną z przełącznikiem albo tylko na podglądzie z parametrem w adresie.
Najprostszy wariant nie wymaga zakładania drugiej strony - wystarczy druga wartość każdego pola.

> [!PATH]
> [CMS → Witryny](app:/cms/sites) → *wybrana witryna* → **Edycja**

Wielojęzyczność włącza się w formatce witryny, w polu **Wielojęzyczność**.

## 1. Włącz wielojęzyczność {#wlacz-wielojezycznosc}

W formatce witryny ustaw **Język** (język podstawowy, np. `pl`) i zaznacz **Wielojęzyczność**.
Bez tego zaznaczenia witryna jest jednojęzyczna: parametr języka w adresie jest ignorowany,
a wartości pól per język nie są rozpoznawane. Zaznaczenie włącza też automatyczne znaczniki
dla wyszukiwarek: język strony, odnośniki między wersjami i adres kanoniczny.

## 2. Skąd witryna wie, w jakim języku pokazać stronę {#skad-jezyk}

Przy każdym wejściu witryna wybiera język w tej kolejności:

1. **Język strony** - jeśli strona ma ustawione pole **Język**, pokazuje się zawsze w nim,
   niezależnie od domeny i adresu,
2. **parametr w adresie** `?lang=en` - do sprawdzenia wersji na podglądzie i do przełącznika
   języka w menu,
3. **język domeny** - każda domena konta ma pole **Język**
   ([Ustawienia CMS](app:/cms/settings), lista domen): `firma.pl` = `pl`, `firma.com` = `en`,
4. **język witryny** - gdy nic wyżej nie zadecydowało.

Kody języków to dwuliterowe kody ISO (`pl`, `en`, `de`, `cs`...), także z regionem (`pt-BR`).

## 3. Trzy sposoby na tłumaczenia {#trzy-sposoby-tlumaczenia}

### Jedna strona, wartości pól per język

Najprostszy sposób, dobry gdy układ strony jest ten sam, a różnią się teksty. Strona zostaje
jedna, bez własnego **Języka**. Wszystkie teksty, które mają się tłumaczyć, są polami -
wystarczy wpisać je w treści w klamrach, a po zapisie staną się polami
([Edycja wprost na stronie](cms/cms-edycja-na-stronie)):

```
<h2>{{ O nas }}</h2>
<p>{{ Tworzymy nowoczesne rozwiązania webowe dla firm każdej wielkości. }}</p>
```

Po zapisie w **Polach dodatkowych** strony są wartości podstawowe. Tłumaczenie dopisujesz jako
osobną grupę pod kodem języka:

```
{
  "o_nas": "O nas",
  "tworzymy_nowoczesne_rozwiazania_webowe": "Tworzymy nowoczesne rozwiązania webowe dla firm każdej wielkości.",
  "en": {
    "o_nas": "About us",
    "tworzymy_nowoczesne_rozwiazania_webowe": "We build modern web solutions for companies of every size."
  }
}
```

Wejście na `/o-nas` pokazuje wartości podstawowe, `/o-nas?lang=en` (albo domena z językiem `en`)
- wartości z grupy `en`. Pole, którego w grupie nie ma, pokazuje wartość podstawową, więc
tłumaczenie można uzupełniać stopniowo. W trybie edycji na stronie klikasz w pole, a okno
edycji ma zakładkę na każdy język witryny (**PL (domyślny)**, **EN**...) - wpisujesz wszystkie
wersje naraz i zapisujesz jednym kliknięciem. Język, którego witryna jeszcze nie zna, dodasz
wchodząc na stronę z `?lang=kod` (np. `?lang=de`) - pojawi się jako kolejna zakładka.
Między wersjami przełącza przełącznik **Język** na dole paska administratora.

Tak samo działają pola szablonu (menu, stopka: `{{ layout.klucz }}`) i pola paragrafów - grupa
pod kodem języka w **Polach dodatkowych** szablonu lub paragrafu.

### Osobna strona na każdy język {#osobna-strona-na-jezyk}

Gdy wersje różnią się układem albo długością, załóż drugą stronę z **tą samą ścieżką** i innym
**Językiem**: `/o-nas` z językiem `pl` i `/o-nas` z językiem `en`. Witryna wybierze stronę
pasującą do języka domeny lub parametru; strona bez języka jest zapasowa dla wszystkich.
Można też dać wersjom różne ścieżki (`/o-nas` i `/about`) - wtedy każda ma własny adres,
a witryna sama dodaje odnośniki między nimi dla wyszukiwarek.

### Strona wzorcowa i strony dziedziczące {#strona-wzorcowa}

Pośredni wariant: strona podstawowa ma pełną treść, a strona w drugim języku wskazuje ją w polu
**Dziedziczy ze strony** i zostawia puste to, co ma być takie samo (treść, szablon, tytuł).
Wypełnia tylko swoje **Pola dodatkowe** - tłumaczenia. Zmiana układu na stronie wzorcowej od
razu działa we wszystkich wersjach. Pole jest widoczne w formatce strony tylko na witrynie
z włączoną wielojęzycznością.

## Które wybrać

| Sytuacja | Sposób |
|---|---|
| ten sam układ, inne teksty i przyciski | jedna strona, wartości pól per język |
| wspólny układ i treść, ale inne teksty i tytuły dla wyszukiwarek | strona wzorcowa i dziedziczące |
| treść i układ różnią się znacząco, własne adresy dla SEO | osobna strona na każdy język |

## Artykuły {#artykuly}

Artykuł ma własne pole **Język**. Na witrynie wielojęzycznej lista pokazuje artykuły w bieżącym
języku oraz te bez języka; artykuł bez języka jest widoczny w każdej wersji.