Sztringcsomagok készítése
Hogyan hozhatsz létre sztringcsomagokat témádhoz vagy bővítményedhez, hogy a felhasználók több sztringet együtt, automatikus fordítással fordíthassanak.
A sztringcsomagok egy adott környezetbe „összecsomagolt” sztringek csoportjai. Céljuk, hogy a felhasználók gyorsabban fordíthassanak, mert nem kell minden sztringet külön lefordítaniuk.
Például így fordítanák a felhasználók az egyedi felhasználói mezőket sztringcsomaggal és nélküle:
- Sztringcsomag nélkül: a négy mező külön sztringként jelenik meg a WPML → Fordítások → Strings oldalon. A felhasználóknak egyenként kell lefordítaniuk őket, automatikus fordítás nélkül.
- Sztringcsomaggal: ugyanaz a négy mező egy csomagként jelenik meg a Fordítások irányítópultján. A felhasználók egyszerre fordíthatják le a több sztringet, automatikus fordítási lehetőséggel.
A legjobb fordítási élményhez készíts saját sztringcsomagokat az alábbi lépésekkel. A példák egy otgs-foo-user-fields nevű tesztbővítményből valók.
1. A fordítandó tartalom azonosítása
Szekció neve “1. A fordítandó tartalom azonosítása”Először azonosítsd azt a tartalmat, amelyet a felhasználók fordítani akarnak, például címeket, feliratokat és felhasználók által létrehozott tartalmat.
2. A csomag fajtájának deklarálása
Szekció neve “2. A csomag fajtájának deklarálása”Deklarálnod kell a csomag fajtáját (package kind). Ez segít a WPML-nek felismerni, mely sztringcsomagok tartoznak az aktív bővítményekhez, és csak azokat fordítja. A szűrő a sztringcsomagoknál úgy működik, ahogy a register_post_types szűrő a bejegyzéstípusoknál.
A fajta deklarálásához használd a wpml_active_string_package_kinds szűrőt:
define( 'FOO_USER_FIELD_PACKAGE_KIND_TITLE', 'OTGS Foo User Fields' );
define( 'FOO_USER_FIELD_PACKAGE_KIND_SLUG', 'otgs-foo-user-fields' );
add_filter( 'wpml_active_string_package_kinds', function( $kinds ) {
$kinds[ FOO_USER_FIELD_PACKAGE_KIND_SLUG ] = [ 'title' => FOO_USER_FIELD_PACKAGE_KIND_TITLE, 'slug' => FOO_USER_FIELD_PACKAGE_KIND_SLUG, 'plural' => FOO_USER_FIELD_PACKAGE_KIND_TITLE, ];
return $kinds;
} );| Paraméter | Jelentése |
|---|---|
title |
A fajta címe, egyezzen a csomagok kind értékével. |
plural |
A cím többes száma. |
slug |
A fajta slugja, egyezzen a csomagok kind_slug értékével. |
3. Csomag létrehozása és sztringek regisztrálása
Szekció neve “3. Csomag létrehozása és sztringek regisztrálása”Hozd létre a csomagot, és a wpml_register_string horoggal regisztráld a benne csoportosított sztringeket:
$userId = 123;
$user = get_user_by( 'id', $userId );
$package = [ 'kind' => FOO_USER_FIELD_PACKAGE_KIND_TITLE, // A „névtér”. 'kind_slug' => FOO_USER_FIELD_PACKAGE_KIND_SLUG, // A „névtér” slugja. 'name' => $userId, // Szöveg vagy szám, de egyedi legyen a „kind” névtéren belül. 'title' => $user->display_name, // A csomag entitásának címe a „kind” névtéren belül.];
$fooUserFields = get_option( 'otgs_foo_user_fields' );
foreach ( $fooUserFields as $fooUserField ) {
$fieldValue = get_user_meta( $userId, $fooUserField, true );
do_action( 'wpml_register_string', $fieldValue, sanitize_key( $fooUserField ), $package, $fooUserField, 'LINE' );
}A csomag paraméterei:
| Paraméter | Jelentése |
|---|---|
kind |
Az entitás névterének felirata (például „Gravity Form”). |
kind_slug |
A névtér slugja (például gravity-form). Ha hiányzik, a kind slugolt változata lesz. |
name |
Az entitás egyedi azonosítója a fajtán belül, lehet szöveg (például slug) vagy szám (például azonosító). |
title |
Az entitás címe a fajtán belül. Érdemes a valódi entitás címét használni. |
edit_link |
Nem kötelező: az objektum szerkesztésének URL-je. |
view_link |
Nem kötelező: az objektum megtekintésének URL-je. |
4. A fordítások lekérése
Szekció neve “4. A fordítások lekérése”A fordítások frontenden való megjelenítéséhez a wpml_translate_string horgot használd:
$userId = 123;
$user = get_user_by( 'id', $userId );
$package = [ 'kind' => FOO_USER_FIELD_PACKAGE_KIND_TITLE, 'kind_slug' => FOO_USER_FIELD_PACKAGE_KIND_SLUG, 'name' => $userId, 'title' => $user->display_name,];
$fooUserFields = get_option( 'otgs_foo_user_fields' );
$translatedFieldValues = [];
foreach ( $fooUserFields as $fooUserField ) {
$fieldValue = get_user_meta( $userId, $fooUserField, true );
$translatedFieldValues[ $fooUserField ] = apply_filters( 'wpml_translate_string', $fieldValue, sanitize_key( $fooUserField ), $package );
}Sztringek frissítése és törlése
Szekció neve “Sztringek frissítése és törlése”Amikor a felhasználók módosítják a tartalmat, a WPML-nek fel kell ismernie az új és az eltávolított sztringeket. Hogy értesítsd a változásokról, fogd közre a regisztráló kódot két függvénnyel:
wpml_start_string_package_registrationwpml_delete_unused_package_strings
$userId = 123;
$package = [ 'kind' => FOO_USER_FIELD_PACKAGE_KIND_TITLE, 'kind_slug' => FOO_USER_FIELD_PACKAGE_KIND_SLUG, 'name' => $userId, // A „title” kulcs a „translate” környezetben nem kötelező.];
do_action( 'wpml_start_string_package_registration', $package );
$fooUserFields = get_option( 'otgs_foo_user_fields' );
foreach ( $fooUserFields as $fooUserField ) {
$fieldValue = get_user_meta( $userId, $fooUserField, true );
do_action( 'wpml_register_string', $fieldValue, sanitize_key( $fooUserField ), $package, $fooUserField, 'LINE' );
}
do_action( 'wpml_delete_unused_package_strings', $package );Sztringcsomagok törlése
Szekció neve “Sztringcsomagok törlése”Amikor a felhasználók eltávolítanak egy tartalmat, a hozzá tartozó sztringcsomagot is töröld, az összes kapcsolódó sztringgel, fordítással és feladattal együtt. Így nem marad felesleges adat az adatbázisban.
A törléshez a bővítményed vagy témád egy megfelelő akciójába akaszd be a wpml_delete_package hívást:
$userId = 123;
do_action( 'wpml_delete_package', $userId, FOO_USER_FIELD_PACKAGE_KIND_SLUG );Kapcsolódó fejezetek
Szekció neve “Kapcsolódó fejezetek”- A nyelvi konfigurációs fájl: a
wpml-config.xmlhasználata. - Multilingual Tools: a beállítás tesztelése és a kompatibilitás ellenőrzése.
Készült: