# A WPML adatbázistáblái

> Hogyan tárolja a WPML a nyelvi, fordítási és sztringadatokat, a táblák oszlopai és a táblák optimalizálása.

A WPML a nyelvi, fordítási és sztringadatokat saját adatbázistáblákban tárolja. Ezek a WordPress táblákhoz és tartalmakhoz kapcsolódnak.

## Nyelvi és fordítási tábla: `icl_translations`

Ez a tábla a nyelvi és fordítási információt tárolja.

- Minden fordíthatóvá állított tartalomelemnek (bejegyzés, oldal, címke, kategória, egyedi bejegyzéstípus, egyedi taxonómia) van egy sora. A hozzászólások nem fordíthatók, de van sorük, mert nyelvi információ tartozik hozzájuk.
- A sor megadja az elem nyelvét és azt a fordítási csoportot, amelyhez tartozik.
- Az ugyanabba a fordítási csoportba tartozó sorok `element_type` és `trid` oszlopa megegyezik.
- Az a sor, amelynek nincs forrásnyelve (NULL), a csoport eredeti eleme.

Oszlopai:

| Oszlop | Jelentés |
|---|---|
| `translation_id` | sorszám |
| `element_type` | az elem típusa (a `wpml_element_type` hook adja vissza) |
| `element_id` | az elem azonosítója (bejegyzéstípusoknál a `post_id`, taxonómiáknál a `term_taxonomy_id`) |
| `trid` | a fordítási csoport azonosítója |
| `language_code` | az elem nyelvkódja |
| `source_language_code` | fordított elemnél az eredeti elem nyelve |

Példa: egy angol bejegyzés azonosítója 3, a spanyol fordítása a 7-es azonosítójú. A tábla így néz ki:

| translation_id | element_type | element_id | trid | language_code | source_language_code |
|---|---|---|---|---|---|
| 1 | post_post | 3 | 2 | en | NULL |
| 2 | post_post | 7 | 2 | es | en |

Mivel a két sor `trid` értéke azonos, egymás fordításai. Maga az érték nem fontos.

## Zászlótábla: `icl_flags`

A WPML sok országzászlót tartalmaz. A nyelvek és országok társítása nem mindig szerencsés, mert sok nyelvet több országban, olykor eltérően beszélnek. A zászló mégis hasznos vizuális támpont, amelyről a látogató könnyen felismeri a nyelvét.

A zászlók a `res/flags` mappában vannak, az `icl_flags` tábla pedig megmondja, melyik nyelvhez melyik zászló tartozik. Oszlopai:

| Oszlop | Jelentés |
|---|---|
| `id` | sorszám |
| `lang_code` | a nyelvkód |
| `flag` | a zászlófájl neve |
| `from_template` | 0: a zászló a WPML `res/flags` mappájából jön, 1: a témamappából |

Másik zászló használatához nyisd meg a **WPML → Settings → Languages** oldal **Manage and Hide Site Languages** részét, kattints az adott nyelv sorában az **Edit** gombra, és nyisd meg a zászlólistát. Az utolsó elem, az **Upload a custom SVG**, a saját fájlodat fogadja. Ugyanezen a képernyőn adhatsz hozzá egyedi nyelvet is.

## Sztringfordítási táblák

Sok WordPress-oldalon vannak olyan szövegek, amelyek nem tartoznak bejegyzéshez, oldalhoz, címkéhez vagy kategóriához, de fordítani kell őket (például a blog szlogenje). Ezeket a WPML a String Translation mechanizmussal kezeli.

A sztringek az `icl_strings` táblában vannak:

| Oszlop | Jelentés |
|---|---|
| `id` | sorszám |
| `language` | nyelv |
| `context` | a sztring környezete (mihez tartozik) |
| `name` | a sztring neve |
| `value` | a sztring tartalma |
| `string_package_id` | a csomag azonosítója, amelyhez a sztring tartozik |
| `type` | a fordítószerkesztő típusa: `LINE`, `AREA` vagy `VISUAL` |
| `title` | a sztring címe a fordítószerkesztőben |
| `status` | jelzi, hogy a sztring minden nyelvre le van-e fordítva |
| `gettext_context` | a gettext-függvényben (például `_x`) megadott kontextus |
| `domain_name_context_md5` | egyedi kulcs a gyorsabb kereséshez |

A sztringek fordításai az `icl_string_translations` táblában vannak:

| Oszlop | Jelentés |
|---|---|
| `id` | sorszám |
| `string_id` | a lefordított sztring azonosítója |
| `language` | a fordítás nyelve |
| `status` | a fordítás állapota (kész / nem kész) |
| `value` | maga a fordítás |
| `translator_id` | a fordító azonosítója |
| `translation_service` | a használt szolgáltatás: üres, helyi vagy külső szolgáltatás |
| `batch_id` | a köteg azonosítója, ha külső szolgáltatás fordította |
| `translation_date` | a fordítás ideje |

## A WPML összes táblája

A WPML a következő táblákat használja (a `wp_` előtag a saját adatbázis-előtagoddal helyettesítendő):

```text
wp_icl_background_task
wp_icl_content_status
wp_icl_core_status
wp_icl_flags
wp_icl_languages
wp_icl_languages_translations
wp_icl_locale_map
wp_icl_message_status
wp_icl_mo_files_domains
wp_icl_node
wp_icl_reminders
wp_icl_strings
wp_icl_string_batches
wp_icl_string_packages
wp_icl_string_positions
wp_icl_string_status
wp_icl_string_translations
wp_icl_translate
wp_icl_translate_job
wp_icl_translations
wp_icl_translation_batches
wp_icl_translation_downloads
wp_icl_translation_status
```

## Az adatbázistáblák optimalizálása

A WPML egyszeri optimalizálási folyamata a `wp_icl_translate` és a `wp_icl_translation_status` tábla méretét csökkenti:

- kitisztítja a fordítási táblákból az elavult vagy fölösleges adatot,
- az új adatot tömörítve, kisebb helyen tárolja,
- a felszabadult hely újrahasznosításával megelőzi az adatbázis jövőbeli duzzadását.

Az optimalizálás a táblákban lévő adat mennyiségét csökkenti, a lemezen lévő fájl méretét nem. A lemezhely visszanyeréséhez a táblákat kézzel kellene újraépíteni, ez nem része a folyamatnak.

### Az optimalizálás futtatása

A **Database & strings maintenance** a WPML Troubleshooting bővítmény része. Előbb telepítsd a **WPML → Activate & Update** oldalról.

1. Nyisd meg a **WPML → Support** oldalt, és kattints a **Database & strings maintenance** elemre.
2. Görgess a **Database Tables Optimization** szakaszhoz.
3. Jelöld be az **I understand and want to proceed** négyzetet, majd kattints az **Optimize translation tables** gombra.

Ennek a képernyőnek minden eszköze közvetlenül a WPML tábláiba ír, és fordításokat veszíthet. Futtatás előtt készíts teljes adatbázis-mentést.
