WPML
A WPML csak addig fordítja le egyéni blokkok attribútumait, ameddig a nyelvi konfigurációs fájl deklarálja őket. A Blockstudio minden mezőértéket a blokk megjegyzésében tárol a blockstudio.attributes alatt, ezért minden blokkhoz olyan bejegyzés szükséges, amely a WPML elemet a szövegmezőire és a mellékletek azonosítóira irányítja. A wp bs wpml config parancs minden regisztrált blokkhoz létrehozza ezeket a bejegyzéseket.
Miért van szükségük konfigurációra a blokkoknak
A WPML az aktív sablon gyökérmappájában és minden aktív bővítmény gyökérmappájában található, wpml-config.xml nevű fájlból olvassa be a konfigurációt. Egyetlen fájlból álló kötelezően használandó bővítmény esetén a mappa neve a fájl neve, .php nélkül. Lásd: Nyelvi konfigurációs fájlok és Egyéni Gutenberg blokkok fordíthatóvá tétele.
A bejegyzés nélküli blokk fordíthatóságáról a WPML automatikus szövegfelismerése gondoskodik, amely a blokk minden szöveges attribútumát felkínálja fordításra. Egy Blockstudio blokk esetében ide tartoznak a választási értékek, fájlhivatkozások, URL-ek és CSS osztályok. A fordítók ezeket a technikai értékeket a valódi szöveg mellett látják, és egy lefordított választási érték vagy osztály működésképtelenné teheti a blokkot.
A konfiguráció létrehozása
Írassa ki a konfigurációt, és mentse annak a sablonnak vagy bővítménynek a gyökérmappájába, amely a blokkokat tartalmazza:
wp bs wpml config > wp-content/themes/my-theme/wpml-config.xml
Vagy hagyja, hogy a parancs írja meg a fájlt:
wp bs wpml config --file=wp-content/themes/my-theme/wpml-config.xml
Egy blokk szövegmezővel, képpel, hivatkozással és ismétlőmezővel:
{
"name": "my-theme/cards",
"title": "Cards",
"blockstudio": {
"attributes": [
{ "id": "heading", "type": "text", "label": "Heading" },
{ "id": "gallery", "type": "files", "label": "Gallery", "multiple": true },
{
"id": "style",
"type": "select",
"label": "Style",
"options": [
{ "value": "light", "label": "Light" },
{ "value": "dark", "label": "Dark" }
]
},
{
"id": "cards",
"type": "repeater",
"label": "Cards",
"attributes": [
{ "id": "title", "type": "text", "label": "Title" },
{ "id": "image", "type": "files", "label": "Image" },
{ "id": "link", "type": "link", "label": "Button" }
]
}
]
}
}
eredménye:
<wpml-config>
<gutenberg-blocks>
<!-- blockstudio:start -->
<!-- Generated by wp bs wpml config. Run it again after changing block fields; edits between the markers are replaced. -->
<gutenberg-block type="my-theme/cards" translate="1" label="Cards">
<key name="blockstudio">
<key name="attributes">
<key name="heading" label="Heading" />
<key name="gallery">
<key name="*" type="post-ids" sub-type="attachment" />
</key>
<key name="cards">
<key name="*">
<key name="title" label="Cards: Title" />
<key name="image" type="post-ids" sub-type="attachment" />
<key name="link">
<key name="title" label="Cards: Button: Link text" />
<key name="url" type="link" label="Cards: Button: URL" />
</key>
</key>
</key>
</key>
</key>
</gutenberg-block>
<!-- blockstudio:end -->
</gutenberg-blocks>
</wpml-config>
A style érték nincs deklarálva, ezért a WPML változatlanul másolja át a fordításba. A gallery és image azonosítók is átkerülnek, a WPML pedig a blokk megjelenítésekor mindegyiket az oldal nyelvéhez tartozó melléklettel helyettesíti, így a lefordított képhez saját alternatív szöveg tartozhat. Lásd az „Azonosítók automatikus átalakítása blokkokban” című részt itt: Egyéni Gutenberg blokkok fordíthatóvá tétele. Ha egy mellékletnek nincs fordítása, a WPML megtartja az eredeti azonosítót.
Mit deklarál a konfiguráció
A parancs a regisztrált blokkokat olvassa be, miután a custom/ mezők és blokkmezők kibontása, valamint a felülírások és attribútumszűrők alkalmazása megtörtént. A bővítmények által egy Blockstudio blokkhoz hozzáadott mezők is bekerülnek. A bővítmények által az alapblokkokhoz vagy más bővítmények blokkjaihoz hozzáadott mezők nem kerülnek bele, mert ezek a blokkok a konfigurációjukat a WPML fájlból vagy a saját bővítményükből kapják.
| Mező | Deklaráció |
|---|---|
text, textarea, richtext, wysiwyg |
Fordítható szöveg. |
link |
title szövegként, url pedig type="link" értékkel, így a WPML elérhető fordítás esetén a hivatkozást annak fordítására cseréli. |
files |
A tárolt mellékletazonosító type="post-ids" és sub-type="attachment" értékkel. multiple esetén a lista szintje * nevű, ami az egyetlen fájl kiválasztásakor tárolt azonosítóra is illeszkedik. |
repeater |
A szint neve *, és minden sorra illeszkedik; a deklarációk a sor mezőire vonatkoznak. A beágyazott ismétlőmezők ugyanígy működnek. |
group id értékkel |
A csoport mezői, a csoportazonosítóval mint kulcselőtaggal (cta_text a cta csoport text mezőjéhez). |
group id nélkül, tabs |
A mezők saját szint nélkül. |
translate értéke true, regisztrált egyéni mezőtípus |
Fordítható szöveg, például egy text mező. |
| Minden más beépített típus | Nincs deklarálva. A WPML változatlanul másolja át az értéket. |
A deklarált szövegmező nélküli blokk translate="0" értéket kap. Ezután a WPML átmásolja az összes értékét, és semmit sem kínál fel fordításra. A files mezői ettől még deklarálva vannak a bejegyzésben, mert a WPML a mellékletazonosítókat attól függetlenül átalakítja, hogy mit mond a translate. A belső blokkok fordítása a szokásos módon történik.
Nincs deklarálva:
- A
hidden-vel rendelkező mezők, mert értékeiket nem a szerkesztők írják. - A
"translate": false-vel rendelkező mezők, lásd alább. - Egyéni mezőtípusok mezői,
amelyek nincsenek regisztrálva a
translate-bentrueértékkel. A parancs mindegyikhez figyelmeztetést ír ki, mert csak a mezőtípus ismeri, hogy az értéke tartalmaz-e szöveget. Egy mezőn megadott explicit"translate": falseaz adott mezőnél is elnyomja ezt a figyelmeztetést. Lásd alább. - Azok az attribútumok, amelyeket egy blokk a natív
attributesformátumában deklarál, nem pedig Blockstudio mezőkként. - Azok a tárolókulcsok, amelyek mezői különböző típusúak; lásd alább.
Minden szövegmező deklarálva van, beleértve az olyan technikai értéket tartalmazókat is, mint egy CSS osztály, kivéve, ha be van állítva rajta a "translate": false.
Mező kihagyása
Egy szövegmező olyan értéket is tartalmazhat, amelynek minden nyelven azonosnak kell maradnia: fióknevet, e-mail-címet, horgonyt vagy CSS osztályt. A WPML ezt bármely más szöveghez hasonlóan felkínálja fordításra, a lefordított érték pedig működésképtelenné teheti a blokkot. Állítsa a translate értékét false értékre, hogy a mező kimaradjon a konfigurációból, és a WPML változatlanul másolja át az értékét a fordításba:
{
"id": "account",
"type": "text",
"label": "Account handle",
"translate": false
}
Egy group, tabs vagy repeater esetében a "translate": false minden belső mezőre, a beágyazott tárolókat is beleértve, érvényes. A gyermekelem nem írhatja felül a kihagyásra beállított tároló értékét a "translate": true használatával. Egy files mezőn a false a mellékletazonosítókat is kihagyja, így a fordítás megtartja az eredeti mellékleteket.
A translate elhagyása vagy true értékre állítása megőrzi a meglévő működést: a mezőtípus dönt. Ettől a rejtett mezők és az olyan értéktípusok, mint a select, nem válnak fordíthatóvá. A beállítás a blokk- és bővítménymezőkre vonatkozik, nem rejti el és nem tiltja le a szerkesztői vezérlőket, és nem módosítja a tárolt értékeket. A beállítás módosítása után futtassa újra a wp bs wpml config parancsot, és frissítse a wpml-config.xml fájlt a létrehozott konfigurációval.
Minden kulcs label része a mező címkéje, amely előtt az azonosítóval rendelkező befoglaló ismétlőmezők és csoportok címkéi állnak. A WPML ezt jeleníti meg mezőnévként a fordítói felületen. Egy link mező két kulcsa Link text és URL utótagot fűz a címkéhez. Ezek az utótagok a webhely nyelvére fordulnak, ezért a parancsot azon a területi beállításon futtassa, amelyen a fordítók dolgoznak.
Egyéni mezőtípusok
A sima szöveges karakterláncot tároló mezőtípus ezt a regisztrációjakor jelzi. A definícióban állítsa a translate értékét true értékre; ehhez a attribute értékének string-nak/-nek kell lennie:
bs_register_field_type('acme/headline', [
'attribute' => 'string',
'translate' => true,
]);
A parancs ezután az adott típus minden mezőjét fordítható szövegként jelöli meg. Egy mező továbbra is beállíthatja a "translate": false értéket, hogy kimaradjon. Az opció nélkül a típus mezői kimaradnak, és a parancs a korábbiak szerint jelzi őket.
Címkék módosítása
A mezőcímkék a blokkszerkesztőhöz készülnek, és olyan útmutatásokat is tartalmazhatnak, mint az „Image (optional)”, amelyeknek nincs jelentésük a fordításszerkesztőben. A blockstudio/wpml/config/label szűrő minden címkét a kiírása előtt kap meg, a kulcs kontextusával együtt:
block: a blokk neve.path: a mezőblockstudio.attributesalatti tárolási útvonala, minden ismétlő soraihoz egy*szinttel, példáulcards/*/link.field: a mező definíciója.parents: a körülvevő ismétlők és azonosítóval rendelkező csoportok címkéi.part:textszövegmező esetén,titlevagyurlpedig a hivatkozásmező két kulcsához.
add_filter('blockstudio/wpml/config/label', function ($label, $context) {
return str_replace(' (optional)', '', $label);
}, 10, 2);
Adjon vissza üres karakterláncot, ha ki szeretné hagyni egy kulcs címkéjét; ekkor a WPML a blokk címkéjét jeleníti meg helyette. Ha a visszatérési érték nem karakterlánc, az eredeti címke marad érvényben. A szűrő módosítása után futtassa újra a parancsot.
Azonos tárolási kulcsú mezők
Két mező ugyanahhoz a tárolási kulcshoz vezethet, például egy blokkmező és egy olyan bővítménymező esetén, amelynek ugyanaz a id értéke, vagy a text mezőnél egy cta azonosítójú csoportban, valamint egy cta_text azonosítójú mezőnél. A parancs csak akkor deklarál ilyen kulcsot, ha egyértelmű, hogy mit tárol:
- Egy blokk mezői között, az ismétlősorokon kívül a Blockstudio tárolási kulcsonként egy attribútumot regisztrál, így egy későbbi mező felülírja a korábbit, annak típusától függetlenül. A blokk bővítményeinek mezői ugyanígy működnek: egy későbbi mező vagy egy később regisztrált bővítmény mezője felülírja a korábbit.
- Az azonos kulcsú blokkmező és bővítménymező egyaránt érvényben marad. A blokksablon az értéket a blokk mezőjének definíciója szerint kapja meg, míg a bővítmény a saját mezőjével alkalmazza. A kulcs csak akkor kap egyszeri deklarációt, ha mindkét mezőhöz ugyanaz a deklaráció szükséges: mindkettő szövegmező (
text,textarea,richtextvagywysiwyg), mindkettő hivatkozás, mindkettőfilesmező (bármelyikükönmultipleesetén a kulcs*szintet kap), vagy egyik sincs deklarálva, például egyselectés egynumberesetén. A két ismétlő mezőit soronként, mezőről mezőre hasonlítja össze. A címke a blokk mezőjéből származik. - Az ugyanazzal a
idértékkel rendelkező két mező egy ismétlő soraiban szintén érvényben marad, és ugyanígy hasonlítja össze őket.
Ha a típusok eltérnek, például a blokkban lévő text mező és a bővítményben lévő select mező esetén, a tárolt érték szöveg vagy egy kiválasztott lehetőség attól függően, melyik vezérlő írta. A parancs nem deklarálja a kulcsot, és figyelmeztetést ír ki:
Warning: Not declared, the fields that store this key have different types: my-theme/cards: tone (text in the block, select in an extension)
Nevezze át az egyik mezőt, vagy állítsa be mindkettőnél ugyanazt a típust, hogy a kulcs deklarálva legyen.
Tartsa naprakészen a konfigurációt
Mezők hozzáadása, eltávolítása vagy átnevezése után futtassa újra a parancsot, és a frissített fájlt mellékelje a témához vagy a bővítményhez. Generálja újra az 7.7.5 előtt készült konfigurációkat, hogy azonosítóval rendelkező mellékletdeklarációk is bekerüljenek. Az eredeti tartalom frissítése után a korábban meglévő tartalmakban fordíthatóvá válnak az új mezők, a fent bemutatott WPML útmutató szerint.
A --file használatakor a parancs létrehozza a hiányzó fájlt. Meglévő fájlban csak a <!-- blockstudio:start --> és a <!-- blockstudio:end --> közötti szöveget cseréli le, így a többi szakasz és a többi blokkhoz tartozó bejegyzések változatlanok maradnak:
<wpml-config>
<custom-types>
<custom-type translate="1">book</custom-type>
</custom-types>
<gutenberg-blocks>
<gutenberg-block type="my-plugin/map" translate="1">
<key name="caption" />
</gutenberg-block>
<!-- blockstudio:start -->
<!-- blockstudio:end -->
</gutenberg-blocks>
</wpml-config>
Ha olyan meglévő fájlt szeretne használni, amelyben még nincsenek jelölők, adja hozzá egyszer a két jelölős sort az gutenberg-blocks eleméhez, vagy ha ilyen elem nincs a fájlban, adjon hozzá egy gutenberg-blocks elemet a jelölőkkel. Jelölők nélkül, illetve ha az eredmény nem lenne érvényes konfiguráció, a parancs változatlanul hagyja a fájlt, és hibával lép ki.
A kézzel írt Blockstudio blokkok bejegyzéseire, például a technikai értékeket elrejtő translate="0" bejegyzésekre már nincs szükség, ha a generált szakasz lefedi a blokkot. A parancs figyelmeztetést ad minden többször deklarált blokkról, így ezek a bejegyzések eltávolíthatók.
Képszövegek a fordítási feladatokban
A WPML az oldal által használt képek szövegeit is hozzáadja az oldal fordítási feladatához: cím, alternatív szöveg, képaláírás és leírás. A feladat befejezésekor a WPML a lefordított szövegeket a célnyelv mellékletéhez írja, és létrehozza azt, ha még nem létezik. Lásd: Média fordítása.
A WPML a tartalomban lévő <img> címkékben, galériákban, a kiemelt képen és az általa ismert blokkokban keresi a képeket. Egy Blockstudio blokk a mellékletazonosítókat a blokk megjegyzésében tárolja, ezért a WPML nem találja meg ezeket.
Ha a WPML aktív, a Blockstudio hozzáadja az oldal blokkjainak mezőiben tárolt mellékleteket a megtalált képekhez (WPML):
filesmezők, a rejtetteket is beleértve, valamintattributesmezőkmediaértékkel; ezek ugyanazok a mezők, amelyeket a blokkszerkesztő médiaként betölt.- Mezők csoportokban, lapokon, ismétlősorokban és belső blokkokban.
- A bővítmények mezői, az alapblokkokon és más bővítmények blokkjain is, mert ezek értékei a bővített blokk attribútumaiban tárolódnak.
A nem mellékletazonosító értékek kimaradnak. Semmit sem kell beállítani, és a wpml-config.xml nincs használatban. A WPML nélkül a program nem keresi a fordítási feladatokhoz szükséges elemeket, és a médiaintegrációs osztály sem töltődik be.
Ez elkülönül a mellékletazonosító átalakításától: a generált XML megadja a WPML számára, hogy melyik lefordított mellékletet jelenítse meg, ez az integráció pedig azt határozza meg, mely melléklethoz tartozó szövegeket kell a fordítási feladatba felvenni. A szöveges hivatkozások és a nem mellékletbejegyzések azonosítói nem kerülnek a médiafeladatokba. Az Blockstudio blokkoknál a mentett beágyazott mezőértékek elsőbbséget élveznek a legfelső szintű értékekkel szemben, a megjelenítéskor alkalmazott módon.
A szövegek csak akkor kerülnek be a feladatba, ha engedélyezve van az WPML > Settings > Media Translation alatti képszöveg-beállítások egyike: „Automatically detect best options for translating image texts” vagy „Translate Media Library texts when translating content”, az alapblokkokban található képekhez hasonlóan.
Blockstudio a képeket a wpml_ids_of_media_used_in_post szűrőn keresztül jelenti, amely WPML egy bejegyzés médiatartalmára vonatkozik a PostWithMediaFiles-ban. Ha ki szeretne hagyni egy képet a feladatokból, távolítsa el az azonosítóját ugyanazon a szűrőn futó, 10-nél nagyobb prioritású visszahívásban:
add_filter(
'wpml_ids_of_media_used_in_post',
function ( $ids ) {
return array_values( array_diff( $ids, array( 42 ) ) );
},
20
);