# Kompatibilitás és wpml-config.xml

> Kompatibilitási kapcsolók témákhoz és bővítményekhez, és a saját wpml-config.xml megadása.

Ez a fejezet a kevésbé népszerű témákra és bővítményekre, a nagyon friss kiadásokra és néhány általános tünetre való. A legtöbb oldalnak nem kell ide jönnie, általában akkor, ha a támogatás egy konkrét kapcsolóra vagy egy beillesztendő `wpml-config.xml`-re hívja fel a figyelmet. Két oldal tartozik hozzá: **WPML → Settings → Compatibility** és **WPML → Settings → Custom XML Configuration**. A leggyakoribb alapértelmezések (tartalomtípusonként, taxonómiánként, mezőnként) külön oldalon vannak, lásd a [Mit fordítson a WPML?](https://hub.hellowp.io/hu/plugins/sitepress-multilingual-cms/testreszabas-mit-fordit/) fejezetet.

## Kompatibilitási kapcsolók

A **Compatibility** oldalon négy kártya van, mindegyik egy-egy problémafajtára.

### Localization options: ha a téma vagy bővítmény fordításai nem töltődnek be

Ha a téma vagy bővítmény mellé saját `.mo` fordításfájlok vannak a `/languages/` mappában, de nem jelennek meg, három kapcsoló segít:

- **Automatically load the theme's .mo file using load_textdomain**: a WPML meghívja a `load_textdomain()` függvényt a téma szövegtartományára. Akkor használd, ha a fordítás ott van a lemezen, de nem látszik.
- **Enter textdomain**: felülírja a magától felismert szövegtartományt, ha a téma szokatlanul regisztrálja.
- **Use theme or plugin text domains when gettext calls do not use a string literal**: azoknak a témáknak és bővítményeknek, amelyek a `__()` hívásnak változót adnak szöveg helyett. A WPML ezt nem tudja felismerni, a kapcsoló segít a fordítást mégis alkalmazni.

### Make Themes Work Multilingual

**Adjust IDs for multilingual functionality**: kompatibilitási réteg olyan témákhoz, amelyek egynyelvű feltevésekkel dolgoznak (például a kiemelt kép azonosítóját egyszer tárolják, és minden nyelven azt használják). A modern témáknak ez általában nem kell. Akkor kapcsold be, ha tartalmi hivatkozások (képek, menük, kiemelt elemek) tévesen átszivárognak nyelvek között.

### Language Filtering for AJAX Operations

**Store a language cookie to support language filtering for AJAX**: egyes bővítmények AJAX-szal töltenek be tartalmat (szűrt terméklista, lapozott bejegyzéslista, gépelés közbeni keresés). Nyelvi süti nélkül a végpont nem tudja, milyen nyelven válaszoljon, és rossz nyelvű eredményt ad. Kapcsold be, ha például a francia oldalon az AJAX-szal betöltött részek angolul jelennek meg.

### Login and Registration Pages

**Allow translating the login and registration pages**: a WordPress `/wp-login.php` és regisztrációs képernyője nem tartozik a WPML által fordított tartalomhoz, mert a téma sablonláncán kívül van. A kapcsoló felveszi őket a fordítható oldalak közé. Nginx esetén a szerverkonfigurációt is módosítani kell hozzá.

## Téma- és bővítményszövegek

Két külön feladat, két külön helyen:

- A **Compatibility** oldal beállításai azokra a fordításokra vonatkoznak, amelyek már benne vannak a témában vagy bővítményben.
- A még nem regisztrált téma- és bővítményszövegek megkeresésére az **Admin Texts Translation** képernyő való: a Translations **Strings** fülén a „nem látod a keresett szövegeket?” résznél érhető el.

## Saját wpml-config.xml

A WPML-kompatibilis témák és bővítmények `wpml-config.xml` fájlt szállítanak, amely megmondja, mely mezőik, tartalomtípusaik, taxonómiáik, shortcode-jaik és metakulcsaik fordíthatók. A WPML ezt aktiváláskor beolvassa, ezért a népszerű témáknál és bővítményeknél a fordítás magától működik. Ha a szállított fájl nem elég, megadhatod a sajátodat, amit a WPML a szállított fölé rétegez.

### Mikor írj sajátot?

- Egy szükséges mező nincs benne a szállított fájlban: a szerző nem jelölte fordíthatónak.
- Egy mező alapértéke nem jó: a fájl **Copy**, te **Translate** szeretnél (vagy fordítva).
- Saját témát vagy bővítményt készítesz, és a fordítási viselkedést a WPML beállítóoldaláról adnád meg, nem fájlban.

Leggyakrabban a támogatás kéri, hogy illessz be egy megadott blokkot.

### Miért az adminban és nem a téma fájljában?

A téma vagy bővítmény saját `wpml-config.xml`-jének szerkesztése elvész a következő frissítéskor. A **WPML → Settings → Custom XML Configuration** szerkesztő a szállított fölé rétegez, és túléli a frissítést. Webhelyspecifikus módosításra ez a jó hely.

### A fájl felépítése

Az oldal egy XML-szerkesztő. Illessz be egy `<wpml-config>...</wpml-config>` blokkot, mentsd, és a WPML alkalmazza. Példa, amely egy shortcode-ot fordíthatóvá tesz:

```xml
<wpml-config>
  <shortcodes>
    <shortcode>
      <tag>add_to_cart_link</tag>
    </shortcode>
  </shortcodes>
</wpml-config>
```

Tipikus elemek:

| Elem | Mit csinál |
| --- | --- |
| `<custom-fields>` | Egy egyedi mezőt `translate`, `copy`, `copy-once` vagy `nothing` állapotra állít. |
| `<custom-types>` | Egyedi tartalomtípust fordíthatóvá tesz. |
| `<taxonomies>` | Egyedi taxonómiát fordíthatóvá tesz. |
| `<shortcodes>` | Felsorolja azokat a shortcode-okat, amelyek tartalmát a WPML fordítsa. |
| `<custom-term-fields>` | Kifejezés-metaadatokhoz. |

Minden elemnek vannak attribútumai (például `action="translate"` egy egyedi mezőn).

### Menete

Ha a támogatás XML-blokkot ad:

1. Nyisd meg a **WPML → Settings → Custom XML Configuration** oldalt.
2. Illeszd be az XML-t a meglévő `<wpml-config>` blokkba (vagy cseréld le a tartalmat, ha teljes blokkot kaptál).
3. Mentsd.
4. A WPML azonnal alkalmazza. Ha új fordítható tartalomtípust vagy mezőt deklarál, az rögtön megjelenik a **Post Types Translation** vagy a **Custom Fields Translation** oldalon.

Ha saját témát vagy bővítményt fejlesztesz, és a beállítást a kóddal együtt akarod szállítani, ugyanezt a blokkot tedd egy `wpml-config.xml` fájlba a téma vagy bővítmény gyökerébe. A WPML aktiváláskor beolvassa. A szerkesztő az oldalspecifikus módosításra, a mellékelt fájl a téma vagy bővítmény saját alapértékeire való.
