WPML
WPML prevaja atribute bloka po meri samo v obsegu, ki ga določa jezikovna konfiguracijska datoteka. Blockstudio shrani vrednost vsakega polja v komentar bloka pod blockstudio.attributes, zato vsak blok potrebuje vnos, ki usmeri WPML na njegova besedilna polja in ID-je prilog. Ukaz wp bs wpml config zapiše te vnose za vsak registrirani blok.
Zakaj bloki potrebujejo konfiguracijo
WPML prebere konfiguracijo iz datoteke z imenom wpml-config.xml v korenski
mapi aktivne teme in vsakega aktivnega vtičnika. Če gre za enodatotečni obvezni
vtičnik, se mapa imenuje enako kot datoteka brez .php. Glejte
Datoteke z jezikovnimi konfiguracijami
in Poskrbite, da bodo bloki Gutenberg prevedljivi.
Če blok nima vnosa, samodejno zaznavanje nizov v WPML ponudi v prevod vsak nizovni atribut bloka. Pri bloku Blockstudio to vključuje vrednosti izbirnih polj, sklice na datoteke, URL-je in razrede CSS. Prevajalci poleg dejanskega besedila vidijo tudi te tehnične vrednosti, prevedena vrednost izbirnega polja ali razred pa lahko pokvari blok.
Ustvarjanje konfiguracije
Izpišite konfiguracijo in jo shranite v korensko mapo teme ali vtičnika, ki vključuje bloke:
wp bs wpml config > wp-content/themes/my-theme/wpml-config.xml
Ali pa pustite, da ukaz zapiše datoteko:
wp bs wpml config --file=wp-content/themes/my-theme/wpml-config.xml
Blok z besedilnim poljem, sliko, povezavo in ponavljalnikom:
{
"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" }
]
}
]
}
}
se pretvori v:
<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>
Vrednost style ni deklarirana, zato jo WPML nespremenjeno kopira v prevod.
Prav tako se kopirajo ID-ja gallery in image, WPML pa pri izrisu bloka vsakega
nadomesti s priponko v jeziku strani, zato ima lahko prevedena slika svoje
nadomestno besedilo. Glejte »Samodejna pretvorba ID-jev v blokih« v
Poskrbite, da bodo bloki Gutenberg prevedljivi.
Če priponka nima prevoda, WPML ohrani izvirni ID.
Kaj je deklarirano
Ukaz prebere registrirane bloke, potem ko so polja custom/ in polja blokov
razširjena ter uporabljene preglasitve in filtri atributov. Vključena so polja,
ki jih razširitve dodajo bloku Blockstudio. Polja, ki jih razširitve
dodajo jedrnim blokom ali blokom drugih vtičnikov, niso vključena, saj ti bloki
konfiguracijo dobijo iz WPML ali lastnega vtičnika.
| Polje | Deklaracija |
|---|---|
text, textarea, richtext, wysiwyg |
Prevedljivo besedilo. |
link |
title kot besedilo in url z type="link", zato WPML povezavo nadomesti z njenim prevodom, če je na voljo. |
files |
Shranjeni ID priponke z type="post-ids" in sub-type="attachment". Z multiple se uporabi raven z imenom * za seznam, ki ustreza tudi posameznemu ID-ju, shranjenemu v polju, ko je izbrana ena datoteka. |
repeater |
Raven z imenom *, ki ustreza vsaki vrstici in vsebuje deklaracije polj vrstice. Gnezdeni ponavljalniki delujejo enako. |
group z id |
Polja skupine, pri čemer je ID skupine predpona ključa (cta_text za polje text v skupini cta). |
group brez id, tabs |
Polja brez lastne ravni. |
Vrsta polja po meri, registrirana z translate, nastavljeno na true |
Prevedljivo besedilo, tako kot pri polju text. |
| Vse druge vgrajene vrste | Niso deklarirane. WPML vrednost kopira nespremenjeno. |
Blok, ki nima deklariranega besedilnega polja, prejme translate="0". WPML nato kopira
vse njegove vrednosti in ne ponudi ničesar v prevod. Njegova polja files so še
vedno deklarirana znotraj vnosa, ker WPML pretvarja ID-je priponk ne glede na to,
kaj določa translate. Notranji bloki se prevajajo kot običajno.
Ni deklarirano:
- Polja z
hidden, ker njihovih vrednosti ne zapisujejo uredniki. - Polja z
"translate": false; glejte spodaj. - Polja vrst po meri, ki niso registrirane z
translate, nastavljenim natrue. Ukaz za vsako izpiše opozorilo, saj samo vrsta polja ve, ali njegova vrednost vsebuje besedilo. Izrecna nastavitev"translate": falseza polje prav tako prepreči to opozorilo. Glejte spodaj. - Atributi, ki jih blok deklarira v svojem izvornem
attributesnamesto kot polja Blockstudio. - Ključi shrambe, katerih polja imajo različne vrste; glejte spodaj.
Deklarirano je vsako besedilno polje, tudi tisto s tehnično vrednostjo, kot je
razred CSS, razen če je nastavljeno "translate": false.
Izključitev polja
Besedilno polje lahko vsebuje vrednost, ki mora biti enaka v vseh jezikih:
uporabniško ime, e-poštni naslov, sidro ali razred CSS. WPML ga ponudi v
prevod kot vsako drugo besedilo, prevedena vrednost pa lahko pokvari blok.
Nastavite translate na false, da polje izključite iz konfiguracije, tako da
WPML njegovo vrednost nespremenjeno kopira v prevod:
{
"id": "account",
"type": "text",
"label": "Account handle",
"translate": false
}
Pri polju group, tabs ali repeater nastavitev "translate": false velja za vsako polje
v njem, vključno z gnezdenimi vsebniki. Podrejeni vsebnik ne more razveljaviti
izključitve nadrejenega vsebnika z "translate": true. Pri polju files nastavitev false
izključi tudi ID-je priponk, zato prevod ohrani izvirne priponke.
Če izpustite translate ali ga nastavite na true, se ohrani obstoječe vedenje:
o tem odloča vrsta polja. S tem skritih polj ali vrst vrednosti, kot je select,
ne naredite prevedljivih. Možnost velja za polja blokov in razširitev, ne skrije
ali onemogoči njihovih kontrolnikov v urejevalniku in ne spremeni shranjenih
vrednosti. Po spremembi nastavitve znova zaženite wp bs wpml config in posodobite svoj
wpml-config.xml z ustvarjeno konfiguracijo.
Vrednost label vsakega ključa je oznaka polja, pred katero so oznake
nadrejenih ponavljalnikov in skupin z ID-jem. WPML jo v urejevalniku prevodov
prikaže kot ime polja. Ključa polja link oznaki dodata Link text in URL.
Ti priponi so prevedeni v jezik spletnega mesta, zato ukaz zaženite z jezikovno
nastavitvijo, ki jo uporabljajo vaši prevajalci.
Vrste polj po meri
Vrsta polja, ki shranjuje navaden besedilni niz, to označi ob registraciji.
V definiciji nastavite translate na true; za to mora biti attribute nastavljen na
string:
bs_register_field_type('acme/headline', [
'attribute' => 'string',
'translate' => true,
]);
Ukaz nato vsako polje te vrste označi kot besedilo za prevajanje. Polje se lahko še vedno nastavi na "translate": false in s tem izključi. Brez te možnosti so polja te vrste izključena in prijavljena kot prej.
Spremenite oznake
Oznake polj so namenjene urejevalniku blokov in lahko vsebujejo namige, kot je »Slika (izbirno)«, ki v urejevalniku prevodov nimajo pomena. Filter blockstudio/wpml/config/label prejme vsako oznako pred zapisom, skupaj s kontekstom ključa:
block: ime bloka.path: pot shranjevanja spodnjega poljablockstudio.attributes, z ravnjo*za vrstice vsakega ponavljalnika, na primercards/*/link.field: definicija polja.parents: oznake nadrejenih ponavljalnikov in skupin z ID-jem.part:textza besedilno polje,titlealiurlza oba ključa polja povezave.
add_filter('blockstudio/wpml/config/label', function ($label, $context) {
return str_replace(' (optional)', '', $label);
}, 10, 2);
Vrnite prazen niz, da izpustite oznako ključa, tako da WPML namesto nje prikaže oznako bloka. Če vrnjena vrednost ni niz, se ohrani izvirna oznaka. Po spremembi filtra ukaz zaženite znova.
Polja z istim ključem shrambe
Dve polji lahko dobita isti ključ shrambe, na primer polje bloka in polje razširitve z istim id ali polje text v skupini z ID-jem cta in polje z ID-jem cta_text. Ukaz tak ključ deklarira le, kadar je jasno, kaj je shranjeno:
- Med polji bloka zunaj vrstic ponavljalnika Blockstudio registrira en atribut za vsak ključ shrambe, zato poznejše polje nadomesti prejšnje ne glede na njegovo vrsto. Enako velja za polja razširitev bloka: poznejše polje ali polje pozneje registrirane razširitve nadomesti prejšnje.
- Polje bloka in polje razširitve z istim ključem ostaneta aktivni. Predloga bloka prejme vrednost, kot jo določa polje bloka, razširitev pa se uporabi z lastnim poljem. Ključ je deklariran enkrat, kadar obe polji zahtevata isto deklaracijo: obe sta besedilni polji (
text,textarea,richtextaliwysiwyg), obe sta povezavi, obe sta poljifiles(če ima katero od njijumultiple, dobi ključ raven*) ali pa ni deklarirano nobeno, na primerselectinnumber. Dva ponavljalnika se primerjata po posameznih poljih v njunih vrsticah. Oznaka je povzeta po polju bloka. - Tudi dve polji z istim
idv vrsticah enega ponavljalnika ostaneta aktivni in se primerjata na enak način.
Če se vrsti razlikujeta, na primer če je v bloku polje text, v razširitvi pa select, je shranjena vrednost besedilo ali možnost izbire, odvisno od kontrolnika, ki jo je zapisal. Ukaz ključa ne deklarira in izpiše opozorilo:
Warning: Not declared, the fields that store this key have different types: my-theme/cards: tone (text in the block, select in an extension)
Preimenujte eno od polj ali obema dodelite isto vrsto, da bo ključ deklariran.
Konfiguracijo redno posodabljajte
Ukaz zaženite znova po dodajanju, odstranitvi ali preimenovanju polj ter posodobljeno datoteko vključite v temo ali vtičnik. Znova ustvarite konfiguracije, nastale pred 7.7.5, da vključite deklaracije ID-jev prilog. Vsebina, ki je obstajala že prej, bo nove možnosti prevajanja prikazala po posodobitvi izvirnika, kot je opisano v zgornjem vodniku WPML.
Z možnostjo --file ukaz ustvari manjkajočo datoteko. V obstoječi datoteki zamenja samo besedilo med <!-- blockstudio:start --> in <!-- blockstudio:end -->, zato drugi razdelki in vnosi za druge bloke ostanejo nespremenjeni:
<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>
Če želite uporabiti obstoječo datoteko brez oznak, enkrat dodajte obe vrstici z oznakama znotraj elementa gutenberg-blocks ali dodajte element gutenberg-blocks z oznakama, če ga datoteka še nima. Če oznak ni ali rezultat ni veljavna konfiguracija, ukaz datoteko pusti nespremenjeno in se konča z napako.
Vnosi za bloke Blockstudio, ki so bili zapisani ročno, na primer vnosi translate="0", ki skrijejo tehnične vrednosti, po tem, ko ustvarjeni razdelek pokrije blok, niso več potrebni. Ukaz opozori na vsak blok, ki je deklariran več kot enkrat, zato lahko te vnose odstranite.
Besedila slik v prevajalskih opravilih
WPML doda besedila slik, ki jih uporablja stran, v prevajalsko opravilo strani: naslov, nadomestno besedilo, napis in opis. Ko je opravilo končano, WPML zapiše prevedena besedila v prilogo za ciljni jezik in jo ustvari, če še ne obstaja. Glejte Kako prevajati predstavnost.
WPML poišče slike v oznakah <img> v vsebini, galerijah, izpostavljeni sliki in blokih, ki jih pozna. Blok Blockstudio shrani ID-je prilog v komentar bloka, zato jih WPML ne najde.
Ko je WPML aktivna, Blockstudio med najdenimi slikami WPML doda priloge, ki jih shranjujejo polja v blokih strani:
- Polja
files, tudi skrita, in poljaattributeszmedia; gre za ista polja, ki jih urejevalnik blokov naloži kot predstavnost. - Polja v skupinah, zavihkih, vrsticah ponavljalnikov in notranjih blokih.
- Polja razširitev, tudi v jedrnih blokih in blokih drugih vtičnikov, saj so njihove vrednosti shranjene med atributi razširjenega bloka.
Vrednosti, ki niso ID priloge, so izpuščene. Ničesar ni treba nastaviti, filter wpml-config.xml pa ni vključen. Brez WPML se nič ne pregleduje za prevajalska opravila in razred za integracijo predstavnosti se ne naloži.
To je ločeno od pretvorbe ID-jev prilog: ustvarjeni XML pove WPML, katero prevedeno prilogo naj izriše, ta integracija pa mu pove, katera besedila prilog naj vključi v prevajalsko opravilo. Sklici na nize in ID-ji objav, ki niso priloge, niso dodani v opravila za predstavnost. Shranjene vrednosti ugnezdenih polj imajo prednost pred vrednostmi na vrhnji ravni v blokih Blockstudio, enako kot pri izrisu.
Besedila so del opravila le, če je v razdelku z možnostmi besedila slik WPML > Settings > Media Translation omogočena ena od možnosti »Samodejno zaznaj najboljše možnosti za prevajanje besedil slik« ali »Prevajaj besedila predstavnosti v knjižnici predstavnosti pri prevajanju vsebine«, enako kot pri slikah v jedrnih blokih.
Blockstudio poroča o slikah prek filtra wpml_ids_of_media_used_in_post, ki WPML se uporablja za predstavnost objave v PostWithMediaFiles. Če želite sliko izključiti iz opravil, odstranite njen ID v povratnem klicu na istem filtru s prioriteto nad 10:
add_filter(
'wpml_ids_of_media_used_in_post',
function ( $ids ) {
return array_values( array_diff( $ids, array( 42 ) ) );
},
20
);