# Gettext használata a fordítható szövegekhez

> Hogyan tedd fordíthatóvá a téma és a bővítmény szövegeit gettext függvényekkel: alapok, bevált gyakorlatok.

Hogy a témák és bővítmények szövegei fordíthatók legyenek és helyesen jelenjenek meg, két feltételnek kell teljesülnie:

- a szöveget gettext függvénybe kell csomagolni;
- meg kell adni a szövegtartomány (text domain) argumentumot.

## Alapok

Vegyük a „Thank you!” szöveget, amely a `my-plugin-domain` szövegtartományhoz tartozik:

```php
__( 'Thank you!', 'my-plugin-domain' );
```

Ha ki akarod írni a böngészőbe, használd az `_e()` függvényt:

```php
_e( 'Thank you!', 'my-plugin-domain' );
```

HTML-ben tedd HTML-címkék közé:

```php
<h2><?php _e( 'Thank you!', 'my-plugin-domain' ); ?></h2>
```

Ha egy hivatkozás el van választva a környező szövegtől, használd az `esc_html_e()` függvényt:

```php
<a href="https://example.com/" ><?php esc_html_e( 'Translated with WPML', 'my-domain' ); ?></a>
```

## Bevált gyakorlatok

### 1. Soha ne csomagolj változót vagy konstanst gettext függvénybe

Így a szöveg nem olvasható be, ezért nem fordítható.

Hibás:

```php
<?php
if ( $morning ) {
   define( 'GREETING', 'Good morning' );
} else {
   define( 'GREETING', 'Good afternoon' );
}

_e( GREETING, 'my-domain' );
?>
```

Helyes:

```php
<?php
if ( $morning ) {
   _e( 'Good morning', 'my-domain' );
} else {
   _e( 'Good afternoon', 'my-domain' );
}
?>
```

### 2. Biztonsági okból escape-eld a kimenetet

Ha a szöveg azonnal megjelenik a kimenetben, használj escape-függvényeket, például az `esc_html__()` és `esc_attr__()` függvényt az XSS-támadások ellen:

```php
echo '<div>' . esc_html__( 'Back to homepage', 'my-domain' ) . '</div>';
```

### 3. Írj megjegyzést a fordítóknak

Ez segít a fordítóknak megérteni, milyen összefüggésben jelennek meg a szövegek vagy a változók:

```php
/* translators: %1$s is status label (e.g. "active" and  %2$s is quantity of bits/s (e.g. 12 Gbit/s) */

printf(
esc_html__( 'State of your network is %1$s. Maximum download speed is %2$s.', 'my-plugin-domain' ),
$state, $speed
);
```
