# A nyelvi URL formája

> Nyelvek könyvtárakban, külön tartományokon vagy paraméterként: beállítás, kiszolgálóigény, hibaelhárítás és munkamenet-adatok átadása.

A WPML háromféleképpen formázhatja a nyelvi webcímeket. Belül minden nyelv egyetlen WordPress-adatbázisban van, a látogatók számára azonban úgy tűnhet, mintha külön oldalak lennének. A formát az első beállításkor választod, később a **WPML → Beállítások → URL-ek és SEO** oldal **Language URL format** kártyáján változtathatod.

| Forma | Példa |
| --- | --- |
| **Different languages in directories** (nyelvek könyvtárakban) | `www.example.com/es/`, `www.example.com/ja/` |
| **A different domain per language** (külön tartomány nyelvenként) | `www.example.com`, `www.example.de` vagy `en.example.com`, `de.example.com` |
| **Language name as a parameter** (nyelv paraméterként) | `www.example.com/?lang=fr`, `www.example.com/about/?lang=en` |

A paraméteres forma nem igényel semmilyen kiszolgáló-beállítást.

## Nyelvek könyvtárakban

Ilyenkor a WPML virtuális mappákba rendezi a fordításokat. A könyvtárak nem léteznek fizikailag a kiszolgálón, csak a webcímekben jelennek meg.

Feltételek:

- Az Apache rewrite moduljának (mod_rewrite) be kell lennie kapcsolva. Ha nincs hozzáférésed a kiszolgáló beállításaihoz, kérd a tárhelyszolgáltatót.
- Az oldalnak „szép” (nem alapértelmezett) permalink-szerkezetet kell használnia, például **Év/Hónap/Név** vagy `%postname%`. A permalinkeket a WordPress beállításaiban módosíthatod.

Gyakori hibák, amiket ne csinálj:

- Ne hozz létre valódi könyvtárakat, és ne telepítsd többször a WordPresst. Ha így teszel, a könyvtáras nyelvek nem fognak működni.
- Ne szerkeszd az `.htaccess` fájlt átirányítási szabályokkal. A WPML a saját átirányítási szabályait dinamikusan hozza létre.

Az alapértelmezett nyelvet is könyvtárba teheted, és megadhatod, mi jelenjen meg a gyökér webcímen: lásd a [Gyökéroldal és az alapnyelv könyvtára](https://hub.hellowp.io/hu/plugins/sitepress-multilingual-cms/nyelvek-es-url-gyokeroldal/) fejezetet.

### Ha nem lehet bekapcsolni a nyelvi könyvtárakat

Ha a WPML nem engedi kiválasztani a könyvtáras formát, az azért van, mert a WPML megpróbálta elérni a nyelv webcímét, és hibát kapott. Három dolognak kell teljesülnie: a webcímátírás be van kapcsolva, a WordPress írhat és olvashat a mappáiban, és az oldal „szép” permalinkeket használ. Fizikai könyvtárakat nem kell létrehozni.

A WPML ezzel a próbahívással ellenőrzi:

```text
sajatoldal.hu/NYELV/?____icl_validate_domain=1
```

Ha megnyitod például a spanyol változat címét, üres oldalt kapsz, a forrásában pedig ez áll:

```html
<!--http://sajatoldal.hu-->
```

Ez jelzi a WPML-nek, hogy a WordPress engedi ezt a webcímszerkezetet. Ha hibaoldalt lát, kikapcsolja a funkciót, és piros hibaüzenetet ír ki a lehetséges okokkal. A WPML a címet `fopen` hívással éri el, ami a böngészőhöz hasonló, de nem ugyanaz, ezért győződj meg róla, hogy az `fopen` engedélyezve van a kiszolgálón. A PHP-beállításba tehetsz egy ilyen sort, hogy ne legyen letiltva:

```text
SecFilterEngine Off
```

**1. A WordPress engedélyezi a webcímátírást.** A WordPress az `.htaccess` fájlt a telepítési mappában hozza létre, ha az alapértelmezettől eltérő webcímeket használsz. A fájl tartalma ez legyen:

```apache
# BEGIN WordPress
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.php [L]
</IfModule>
# END WordPress
```

Ha nincs ilyen fájl, hozd létre. Ha üres, másold bele a fenti tartalmat. Apache-on a mod_rewrite modul végzi az átírást, ami általában alapból be van kapcsolva. Ha nem vagy biztos benne, kérdezd meg a tárhelyszolgáltatót.

**2. A WordPress írhat a mappáiba.** Apache esetén derítsd ki, melyik felhasználó alatt fut, és add meg neki az olvasási és írási jogot a WordPress telepítési mappájára. Ezt FTP-programmal, parancssorból vagy a tárhelyszolgáltató segítségével teheted meg. Utána próbáld újra.

**3. Szép permalinkek.** Állíts be nem alapértelmezett permalink-szerkezetet a WordPress beállításaiban.

CDN esetén (például Cloudflare) előfordulhat, hogy az eltávolítja a HTML-megjegyzéseket, így a próbahívás hamis hibát jelez a `?____icl_validate_domain=1` miatt, miközben a nyilvános oldalon minden rendben van.

## Külön tartomány nyelvenként

A nyelveket teljesen önálló tartományokon (például `example.com` és `example.de`) vagy aldomainokon (`en.example.com`, `de.example.com`) is szervezheted. A WPML a tartományra érkező kérésnél a megfelelő fordítást tölti be, nem irányít át az elsődleges tartományra. A tartományok a kereséseknél SEO-előnyt is adhatnak a másodlagos nyelveknek.

Bekapcsolás: **WPML → Beállítások → URL-ek és SEO**, **Language URL format** kártya, **A different domain per language**.

Amit előre el kell intézned:

- Meg kell vásárolnod a használni kívánt tartományokat, és szerkeszthetned kell a DNS-beállításaikat, hogy a tartomány a webhely kiszolgálójának (IP-címének) irányába mutasson.
- Aldomain esetén is kell a főtartomány (például `example.com`), és a tárhelycsomagnak engednie kell aldomainek létrehozását.
- Minden nyelvi változathoz kell SSL-tanúsítvány, vagy egy több tartományra szóló tanúsítvány.

A beállítás a tárhelyszolgáltatóval együtt a legegyszerűbb, mert minden szolgáltatónak más a vezérlőpultja (cPanel, Webmin stb.). Ajánlott lépések, ha a német változat tartománya `example.de`, az angolé `example.com`:

1. **Vedd meg a tartományt.** Ha lehet, a tárhelyet és a tartományt ugyanattól a cégtől vedd, mert így egyszerűbb a beállítás.
2. **Állítsd be a DNS-t.** Minden tartománynak vagy aldomainnek a WPML-lel működő webhelyedre kell mutatnia. Külön tartománynál kérd a szolgáltatótól egy parkolt tartomány (alias) felvételét a meglévő tartományhoz. Aldomainnél kérd az aldomain felvételét úgy, hogy a főtartománnyal azonos helyre mutasson. A szolgáltatónak szüksége lesz a WordPress-oldal helyére (IP-cím) és az elsődleges tartomány nevére. Ha a tartományt és a tárhelyet más cégtől vetted, kérj tőlük részletes útmutatót.
3. **Teszteld a tartományokat.** A WPML-beállítás előtt nyisd meg az új tartományokat: mindegyiknek ugyanazt az oldalt kell mutatnia átirányítás nélkül (a WPML kikapcsolt állapotában is).
4. **Állítsd be a WPML-ben.** A **WPML → Beállítások → URL-ek és SEO** oldalon, a **Language URL format** kártyán válaszd az **A different domain per language** lehetőséget, írd be a másodlagos nyelv tartományát (például `example.de`), és kattints a **Save** gombra. A WPML ellenőrzi az új tartományt, hiba esetén értesítést kapsz.

Ezen az oldalon bekapcsolhatod azt is, hogy a bejelentkezési munkamenet átmenjen a többi tartományra. Ha oldalépítővel (például Elementorral) szerkeszted az alap- és a másodlagos nyelvű tartalmat, ezt be kell kapcsolnod, különben a tartományváltáskor kijelentkeztet.

Gyakori kérdések:

- **Keverhetem a tartományokat és az aldomaineket?** Igen. Állítsd be őket a tárhelyen, majd írd be a WPML beállításaiba.
- **Keverhetem a tartományokat és a könyvtárakat vagy paramétereket?** Nem. Tartományt és könyvtárat használó nyelvek vegyesen nem lehetnek.

### Munkamenet-adatok átadása tartományok között

Egyes bővítmények és sablonok a munkamenet adataira (sütikre) támaszkodnak. Nyelvváltáskor tartományok között ezek elvesznek, a látogató például nem látja többé a kosarában lévő termékeket, mert a böngésző szigorúan elkülöníti a különböző webhelyek adatait. A WPML ezért saját mechanizmussal szinkronizálja a munkamenet-adatokat a tartományai között.

A beállítás a **WPML → Beállítások → URL-ek és SEO** oldalon, az **A different domain per language** módnál, a **Language URL format** szakaszban van: **Pass session arguments between domains through the language switcher**.

Hogyan működik: ha vannak szinkronizálandó sütik, a nyelvváltó hivatkozásaihoz egy paraméter kerül, például:

```text
sample.es?xdomain_data=HOSSZU_SZOVEG
```

Ez az `xdomain_data` paraméter tartalmazza a nyelvváltás utáni süti beállításához szükséges adatot. A bővítmények és sablonok a `wpml_cross_domain_language_data` szűrővel adhatják át a szükséges adatot; a WPML Multilingual & Multicurrency for WooCommerce így viszi át a kosár sütijét.

- **SEO-problémát nem okoz.** A paramétert a böngészőben JavaScript fűzi a hivatkozásokhoz, a WordPress által kirajzolt oldalban nincs benne. Az oldaltérképben és az indexelt oldalakon nem látható, a Google sem látja a forrásban. A Google Analyticsben néha megjelenhet, mert ezek valódi, a látogatók által kattintott hivatkozások, ez viszont nem árt a SEO-nak.
- **Egyéni nyelvváltóval is működik**, ha a WPML nyelvváltó API-jával készült, mert a JavaScript felismeri a nyelvváltó hivatkozásait.
