# Más bővítmények és témák szövegeinek fordíthatóvá tétele

> Hogyan regisztrálhatod a felhasználók által bevitt szövegeket a WPML sztringtáblájában, hogy a String Translation fordíthassa őket.

Ha egy téma vagy bővítmény a felhasználó által megadott szövegeket tárol (például egy widget címét vagy szövegmezőjét), ezeket regisztrálni kell a WPML sztringtáblájában. A regisztrált szövegeket a String Translation fordítja.

## Felhasználói szövegek regisztrálása

Amikor a felhasználó új szöveget hoz létre vagy egy meglévőt módosít, a szöveget regisztrálni kell. Ezt a `wpml_register_single_string` action hookkal teheted meg:

```php
do_action( 'wpml_register_single_string', string $context, string $name, string $value )
```

- `$context`: a bővítmény vagy a téma neve, olvasható formában.
- `$name`: a sztring neve, amely segít a fordítónak megérteni, mit fordít.
- `$value`: a lefordítandó szöveg.

Példa egy egyedi widgetre, amelynek van címe, egysoros beviteli mezője és szövegterülete. A widget `update()` függvényében a mentéskor regisztrálod a mezőket:

```php
function update( $new_instance, $old_instance ) {
    $instance = $old_instance;
    $instance['title']           = strip_tags( $new_instance['title'] );
    $instance['custom_input']    = strip_tags( $new_instance['custom_input'] );
    $instance['custom_textarea'] = $new_instance['custom_textarea'];

    // WPML: a sztringek regisztrálása fordításra
    do_action( 'wpml_register_single_string', 'Widgets', 'Custom Widget - input field', $instance['custom_input'] );
    do_action( 'wpml_register_single_string', 'Widgets', 'Custom Widget - textarea field', $instance['custom_textarea'] );

    return $instance;
}
```

A példában a bemeneti mező és a szövegterület szövege a **Widgets** kontextusban, a **Custom Widget - input field** és a **Custom Widget - textarea field** néven jelenik meg a sztringek között. A regisztrált szövegek fordítását a frontenden a `wpml_translate_single_string` hookkal jeleníted meg.

## Integráció témákkal és bővítményekkel

A String Translation beépítésekor figyelj arra, hogy a hívások akkor is működjenek, ha a WPML nincs jelen.

### Feltételes hívások

Tedd a hívásokat függvény-létezési vizsgálatba, hogy ha a WPML aktív, meghívódjon, ha nem, a normál működés maradjon.

### A WPML késői aktiválása

Gondolj arra az esetre is, hogy a felhasználó csak jóval később aktiválja a WPML-t. Ilyenkor a korábban létrehozott szövegek nem fordíthatók, mert a `wpml_register_single_string` hívás a létrehozásukkor nem futott le. Ennek elkerülésére regisztráld az összes felhasználói szöveget minden alkalommal, amikor a bővítmény adminoldala betöltődik. Ez elhanyagolható futásidőt jelent, de garantálja, hogy a sztringek mindig eljutnak a fordításhoz, és naprakészek.

A kód először azt vizsgálja, hogy létezik-e a `wpml_register_single_string` függvény, és ha igen, meghívja az összes felhasználói szövegre. Működése:

- Ha üres vagy NULL értékkel hívod, a WPML figyelmen kívül hagyja.
- Ha a sztring már létezik és nem módosult, a WPML figyelmen kívül hagyja a hívást.
- Csak új vagy módosított sztring regisztrálásakor történik tényleges művelet.

A teljes fordítási tábla a memóriában van gyorsítótárazva, ezért az ismételt hívás nagyon kevés erőforrást igényel.

## Kapcsolódó fejezetek

- A témák és bővítmények kódba írt szövegeinek regisztrálása: [Gettext használata](https://hub.hellowp.io/hu/plugins/sitepress-multilingual-cms/fejleszto-gettext/).
- Téma- vagy bővítménybeállítások regisztrálása: [A wp_options táblában tárolt szövegek](https://hub.hellowp.io/hu/plugins/sitepress-multilingual-cms/fejleszto-admin-szovegek/).
- Elemek csoportos fordítása: [Sztringcsomagok készítése](https://hub.hellowp.io/hu/plugins/sitepress-multilingual-cms/fejleszto-sztring-csomagok/).
