# Duplikálás, másolás és alapnyelvi tartalék

> Hogyan jelenítsd meg a le nem fordított tartalmat a másodlagos nyelveken: duplikálás, másolás és tartalék az alapnyelvre.

Ha egy tartalmat nem fordítasz le, háromféleképpen jelenítheted meg a másodlagos nyelveken.

| | Duplikálás | Másolás | Tartalék (fallback) |
|---|---|---|---|
| Mit csinál | Az eredetit átmásolja a másodlagos nyelvekre, és szinkronban tartja | Az eredetit átmásolja, de nem tartja szinkronban | Ha van fordítás, azt mutatja, ha nincs, az eredetit |
| Mikor jó | Nem fordítod le, de minden nyelven látszania kell | Le fogod fordítani, és addig kell egy ideiglenes helyettesítő | Minden nyelven látszódjon a tartalom, akár van fordítás, akár nincs |
| Kapcsolat az eredetivel | Szinkronban van | Független | Szinkronban van |

## Duplikálás

A duplikálás az alapnyelvi tartalmat a taxonómiákkal együtt átmásolja a másodlagos nyelvekre, és szinkronban tartja. Amikor az eredetit szerkeszted, a duplikátum automatikusan frissül, a duplikátumon végzett saját módosításaid pedig felülíródnak.

1. Nyisd meg a **WPML → Translations** oldalt, a **Translations dashboard** lapot.
2. Jelöld ki a duplikálni kívánt tartalmakat.
3. Válaszd ki a célnyelveket, és kattints a **Duplicate** gombra.

### Duplikátum átalakítása fordítássá

1. A felső WordPress-eszköztáron váltsd át a nyelvet a duplikátum nyelvére.
2. Szerkeszd a duplikátumot.
3. A szerkesztő betöltésekor felugró ablakban kattints az **Edit anyway** gombra.
4. A szerkesztő **Language** részében kattints a **Translate independently** gombra.

Az oldal ezután nem szinkronizál az eredetivel. A fordítást ugyanígy alakíthatod vissza duplikátummá, csak az utolsó lépésben az **Overwrite with [alapnyelv] content** gombra kattints.

## Másolás

A másolás ugyanaz, mint a duplikálás, azzal a különbséggel, hogy a másolat nincs szinkronban az eredetivel. Szabadon szerkesztheted, az eredeti frissítése nem írja felül. A másolás az alapnyelvi címet, a kivonatot és az oldal tartalmát viszi át, az egyedi mezőket nem.

1. Szerkeszd az oldalt az alapnyelven.
2. A felső WordPress-eszköztáron válts arra a nyelvre, amelyre másolni akarsz. Üres oldal jelenik meg.
3. A szerkesztő **Language** részében kattints a **Copy content from [alapnyelv]** gombra.

Ha a Gutenberg blokkszerkesztőben nem látod a nyelvváltót a képernyő tetején, kattints a jobb felső sarokban a hárompontos menüre, és kapcsold ki a **Fullscreen Mode** módot.

## Tartalék az alapnyelvre

A tartalék a le nem fordított tartalom helyén az eredetit jeleníti meg: ha van fordítás, fordítva látszik, ha nincs, alapnyelven.

Tartalomtípusokhoz:

1. Nyisd meg a **WPML → Settings → Post Types Translation** oldalt.
2. A kívánt típusnál válaszd a **Translatable - use translation if available or fallback to default language** lehetőséget.

Taxonómiákhoz:

1. Nyisd meg a **WPML → Settings → Taxonomy Translation** oldalt.
2. A kívánt taxonómiánál válaszd ugyanezt a lehetőséget.

## Duplikált tartalom törlése a fordítási mód váltása után

Ha az oldalad a duplikálásra épült, és áttérsz a tartalék módra, érdemes a régi duplikátumokat törölni. Ezek a lépések az adatbázisból törölnek, ezért csak akkor kezdj hozzá, ha pontosan tudod, mit csinálsz, és **előtte készíts teljes adatbázis-mentést**.

Az SQL-lekérdezéseket előbb át kell szerkesztened:

- Az `XXXX` helyére a tartalomtípus kerül (például `post`, `product`, `page`).
- Az `YYYY` helyére az oldal alapnyelvének kódja (például `en`).
- A `wp_` helyére a `wp-config.php` `$table_prefix` változójában beállított előtag (alapból `wp_`).

A lekérdezéseket SQL-adatbázis-kezelő eszközben, például phpMyAdminban futtasd.

1. Duplikált tartalom törlése a `wp_posts` táblából:

```sql
DELETE FROM wp_posts
WHERE post_type = 'XXXX' AND ID IN (
  SELECT pm.post_id
  FROM wp_postmeta pm
    JOIN wp_icl_translations t ON t.element_id = pm.meta_value
  WHERE pm.meta_key = '_icl_lang_duplicate_of' AND pm.meta_value > 0 AND
    t.element_type LIKE 'post_%' AND t.language_code = 'YYYY'
)
```

2. A fordítási beállítások törlése a `wp_icl_translations` táblából:

```sql
DELETE FROM wp_icl_translations
WHERE element_type = 'post_XXXX' AND element_id IN (
  SELECT pm.post_id
  FROM wp_postmeta pm
    JOIN wp_icl_translations t ON t.element_id = pm.meta_value
  WHERE meta_key = '_icl_lang_duplicate_of' AND meta_value > 0 AND t.language_code = 'YYYY'
)
```

3. Árván maradt postmeta-adatok törlése. Ez nem kötelező, csak az adatbázist takarítja. A lekérdezés lassú, és a szerver beállításaitól függően időtúllépést is kaphatsz.

```sql
DELETE pm
FROM wp_postmeta pm
  LEFT JOIN wp_posts wp ON wp.ID = pm.post_id
WHERE wp.ID IS NULL
```

## Archívumlisták az alapnyelv váltása után

Az alapnyelvet a **WPML → Settings → Languages** oldalon változtathatod meg: a nyelv sorában kattints az **Edit** gombra, és válaszd a **Set as default** lehetőséget. Váltás előtt készíts mentést az oldalról.

Az új alapnyelv lesz az oldal fő nyelve, ezt látják először a látogatók. A WPML a tartalmat és a hivatkozásokat a megfelelő nyelvre igazítja, de a meglévő bejegyzések nyelvét nem módosítja: az a létrehozáskor dől el, és csak a WordPress szerkesztőjében változtatható.

A gond azoknál a tartalomtípusoknál és taxonómiáknál jelentkezhet, amelyek **Translatable - use translation if available or fallback to default language** módban vannak. Ha egy tartalom nincs lefordítva az új alapnyelvre, az nem jelenik meg az archívumokban. Nem eltűnt, csak ezen a nyelven nem létezik.

Példa egy WooCommerce-oldalon: az alapnyelv az angol, a másodlagos a spanyol, a **Products** típus tartalék módban van, és egyetlen terméket fordítottál le spanyolra.

- Angol alapnyelvnél a spanyol bolt egy spanyol és a többi angol terméket mutatja.
- Ha az alapnyelv spanyol lesz, a spanyol bolt csak az az egy lefordított terméket mutatja. Az angol bolt nem változik, mert ott minden termék eredetileg angol, tartalékra nincs szükség.

### Felkészülés az alapnyelv váltására

Az alapnyelv váltása után a **WPML → Translations** oldalon már nem használhatod a tömeges automatikus fordítást arra, hogy a korábbi alapnyelvről (a forrásnyelvről) a többi nyelvre, az új alapnyelvre is lefordítsd a meglévő tartalmat. Ha a váltás után kapcsolod be a **Translate Everything Automatically** módot, a forrásnyelvi tartalmat sem veszi fel az automatikus fordítás. Ezért váltás előtt:

- **1. lehetőség:** fordítsd le az összes tartalmat az új alapnyelvre. Sok tartalomnál az automatikus fordítás meggyorsítja.
- **2. lehetőség:** duplikáld a meglévő tartalmat (oldalak, termékek, egyedi tartalomtípusok) az új alapnyelvre.

### Ha már megtörtént a váltás

Ha az előkészítés nélkül váltottál, és hiányzik tartalom az archívumokból, az Advanced Translation Editorral lefordíthatod a forrásnyelvi (előző alapnyelvű) tartalmat az új alapnyelvre. Ha sok olyan elemed van, amit nem fordítottál le (például portfólió vagy más, fordítható szöveg nélküli egyedi tartalomtípus), a WPML ügyfélszolgálata tömegesen át tudja állítani a nyelvüket.
