Pāriet uz saturu

WPML

WPML tulko pielāgota bloka atribūtus tikai tādā apmērā, kādu nosaka valodas konfigurācijas fails. Blockstudio saglabā katra lauka vērtību bloka komentārā zem blockstudio.attributes, tāpēc katram blokam nepieciešams ieraksts, kas norāda WPML uz tā teksta laukiem un pielikumu ID. Komanda wp bs wpml config ieraksta šos datus katram reģistrētajam blokam.

Kāpēc blokiem nepieciešama konfigurācija

WPML nolasa konfigurāciju no faila ar nosaukumu wpml-config.xml aktīvās tēmas un katra aktīvā spraudņa saknes mapē. Viena faila obligāti ielādējamam spraudnim mapes nosaukums ir faila nosaukums bez .php. Skatiet Valodas konfigurācijas faili un Padariet pielāgotos Gutenberg blokus tulkojamus.

Bloks bez ieraksta tiek nodots automātiskai virkņu noteikšanai, ko veic WPML, un tulkošanai tiek piedāvāta ikviena bloka virknes atribūta vērtība. Blokam Blockstudio tas ietver atlasāmās vērtības, failu atsauces, URL un CSS klases. Tulkotāji līdzās īstajam tekstam redz šīs tehniskās vērtības, un iztulkota atlasāmā vērtība vai klase var sabojāt bloku.

Ģenerējiet konfigurāciju

Izdrukājiet konfigurāciju un saglabājiet to tās tēmas vai spraudņa saknes mapē, kurā iekļauti bloki:

Apvalks
wp bs wpml config > wp-content/themes/my-theme/wpml-config.xml

Vai ļaujiet komandai ierakstīt failu:

Apvalks
wp bs wpml config --file=wp-content/themes/my-theme/wpml-config.xml

Bloks ar teksta lauku, attēlu, saiti un atkārtotāju:

JSON
{
  "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" }
        ]
      }
    ]
  }
}

kļūst par:

XML
<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>

Vērtība style nav deklarēta, tāpēc WPML to iekopē tulkojumā bez izmaiņām. Tiek iekopēti arī ID gallery un image, un, renderējot bloku, WPML katru no tiem aizstāj ar lapas valodas pielikumu, tādēļ tulkotajam attēlam var būt savs alternatīvais teksts. Skatiet sadaļu “Automātiska ID konvertēšana blokos” rakstā Padariet pielāgotos Gutenberg blokus tulkojamus. Ja pielikumam nav tulkojuma, WPML saglabā sākotnējo ID.

Kas tiek deklarēts

Komanda nolasa reģistrētos blokus pēc tam, kad ir izvērsti custom/ lauki un bloku lauki un piemēroti aizvietojumi un atribūtu filtri. Tiek iekļauti lauki, ko paplašinājumi pievieno Blockstudio blokam. Lauki, ko paplašinājumi pievieno kodola blokiem vai citu spraudņu blokiem, netiek iekļauti, jo šie bloki konfigurāciju saņem no WPML vai sava spraudņa.

Lauks Deklarācija
text, textarea, richtext, wysiwyg Tulkojams teksts.
link title kā teksts un url ar type="link", tāpēc WPML aizstāj saiti ar tās tulkojumu, ja tāds ir pieejams.
files Saglabātais pielikuma ID ar type="post-ids" un sub-type="attachment". Ar multiple — līmenis ar nosaukumu * sarakstam, kas atbilst arī vienam ID, kuru lauks saglabā, ja atlasīts viens fails.
repeater Līmenis ar nosaukumu *, kas atbilst katrai rindai un kurā ir rindu lauku deklarācijas. Iekļauti atkārtotāji darbojas tāpat.
group ar id Grupas lauki, izmantojot grupas ID kā atslēgas prefiksu (cta_text laukam text grupā cta).
group bez id, tabs Lauki bez sava līmeņa.
Pielāgots lauka tips, kas reģistrēts ar translate iestatītu uz true Tulkojams teksts, tāpat kā laukam text.
Visi pārējie iebūvētie tipi Nav deklarēti. WPML kopē vērtību bez izmaiņām.

Blokam bez deklarēta teksta lauka tiek piešķirta translate="0". Pēc tam WPML iekopē visas tā vērtības, un tulkošanai nekas netiek piedāvāts. Tā files lauki joprojām tiek deklarēti ierakstā, jo WPML konvertē pielikumu ID neatkarīgi no tā, ko nosaka translate. Iekšējie bloki tiek tulkoti kā parasti.

Nav deklarēti:

  • Lauki ar hidden, jo redaktori to vērtības neieraksta.
  • Lauki ar "translate": false; skatiet tālāk.
  • Lauki ar pielāgotiem lauku tipiem, kas nav reģistrēti ar translate iestatītu uz true. Komanda katram no tiem izvada brīdinājumu, jo tikai lauka tips zina, vai tā vērtība satur tekstu. Skaidri norādīts "translate": false laukā arī novērš šī brīdinājuma rādīšanu par attiecīgo lauku. Skatiet tālāk.
  • Atribūti, ko bloks deklarē savā dabiskajā attributes, nevis kā Blockstudio laukus.
  • Krātuves atslēgas, kuru laukiem ir dažādi tipi; skatiet tālāk.

Tiek deklarēts ikviens teksta lauks, tostarp tāds, kurā ir tehniska vērtība, piemēram, CSS klase, ja vien tam nav iestatīts "translate": false.

Neiekļaut lauku

Teksta laukā var būt vērtība, kurai visās valodās jāpaliek nemainīgai: konta lietotājvārds, e-pasta adrese, enkurs vai CSS klase. WPML piedāvā šo vērtību tulkošanai tāpat kā jebkuru citu tekstu, un iztulkota vērtība var sabojāt bloku. Iestatiet translate uz false, lai lauku izlaistu konfigurācijā un WPML iekopētu tā vērtību tulkojumā bez izmaiņām:

JSON
{
  "id": "account",
  "type": "text",
  "label": "Account handle",
  "translate": false
}

Blokam group, tabs vai repeater "translate": false attiecas uz visiem iekšējiem laukiem, tostarp ligzdotajiem konteineriem. Pakārtots elements nevar atcelt izvēli izlaist konteineru, izmantojot "translate": true. Laukam files false izlaiž arī pielikumu ID, tāpēc tulkojumā tiek saglabāti sākotnējie pielikumi.

Ja translate nav norādīts vai ir iestatīts uz true, tiek saglabāta esošā darbība: lēmumu pieņem lauka tips. Tas nepadara slēptos laukus vai tādus vērtību tipus kā select tulkojamus. Šī opcija attiecas uz bloku un paplašinājumu laukiem, neslēpj un neatspējo to redaktora vadīklas un nemaina saglabātās vērtības. Pēc iestatījuma maiņas vēlreiz palaidiet wp bs wpml config un atjauniniet savu wpml-config.xml ar ģenerēto konfigurāciju.

Katras atslēgas label ir lauka etiķete, pirms kuras ir ietverošo atkārtotāju un grupu ar ID etiķetes. WPML parāda to kā lauka nosaukumu tulkošanas redaktorā. Abas atslēgas laukam link pievieno etiķetei Link text un URL. Šie sufiksi tiek tulkoti vietnes valodā, tāpēc palaidiet komandu tulkotājiem paredzētajā valodā.

Pielāgoti lauku tipi

Lauka tips, kurā tiek saglabāta vienkārša teksta virkne, par to paziņo reģistrācijas laikā. Definīcijā iestatiet translate uz true; šim nolūkam attribute jābūt string:

PHP
bs_register_field_type('acme/headline', [
  'attribute' => 'string',
  'translate' => true,
]);

Komanda pēc tam deklarē visus šī tipa laukus kā tulkojamu tekstu. Laukam joprojām var iestatīt "translate": false, lai to izlaistu. Ja šī opcija nav norādīta, tipa lauki tiek izlaisti un par tiem tiek ziņots tāpat kā iepriekš.

Mainiet etiķetes

Lauku etiķetes ir paredzētas bloku redaktoram, un tajās var būt norādes, piemēram, “Image (optional)”, kas tulkošanas redaktorā neko nenozīmē. blockstudio/wpml/config/label filtrs saņem katru etiķeti pirms tās ierakstīšanas kopā ar atslēgas kontekstu:

  • block: bloka nosaukums.
  • path: lauka glabāšanas ceļš zem blockstudio.attributes, ar līmeni * katra atkārtotāja rindām, piemēram, cards/*/link.
  • field: lauka definīcija.
  • parents: ietverošo atkārtotāju un grupu etiķetes ar ID.
  • part: text teksta laukam, title vai url abām saites lauka atslēgām.
PHP
add_filter('blockstudio/wpml/config/label', function ($label, $context) {
  return str_replace(' (optional)', '', $label);
}, 10, 2);

Atgrieziet tukšu virkni, lai izlaistu atslēgas etiķeti; tad WPML vietā tiek rādīta bloka etiķete. Ja atgrieztā vērtība nav virkne, tiek saglabāta sākotnējā etiķete. Pēc filtra maiņas palaidiet komandu vēlreiz.

Lauki ar vienādu glabāšanas atslēgu

Diviem laukiem var būt viena un tā pati glabāšanas atslēga, piemēram, bloka laukam un paplašinājuma laukam ar vienādu id vai laukam text grupā ar ID cta un laukam ar ID cta_text. Komanda deklarē šādu atslēgu tikai tad, ja ir skaidrs, kas tajā tiek glabāts:

  • Bloka laukos ārpus atkārtotāja rindām Blockstudio reģistrē vienu atribūtu katrai glabāšanas atslēgai, tāpēc vēlāks lauks aizstāj agrāku neatkarīgi no tā tipa. Bloka paplašinājumu lauki darbojas tāpat: vēlāks lauks vai vēlāk reģistrēta paplašinājuma lauks aizstāj agrāku.
  • Bloka lauks un paplašinājuma lauks ar vienādu atslēgu abi paliek spēkā. Bloka veidne saņem vērtību, kā to definē bloka lauks, savukārt paplašinājums tiek lietots ar savu lauku. Atslēga tiek deklarēta vienreiz, ja abiem laukiem nepieciešama viena un tā pati deklarācija: abi ir teksta lauki (text, textarea, richtext vai wysiwyg), abi ir saites, abi ir files lauki (ja kādam no tiem ir multiple, atslēka iegūst līmeni *) vai neviens nav deklarēts, piemēram, select un number. Divus atkārtotājus salīdzina pa laukiem to rindās. Etiķete tiek ņemta no bloka lauka.
  • Arī divi lauki ar vienādu id viena atkārtotāja rindās paliek spēkā un tiek salīdzināti tāpat.

Ja tipi atšķiras, piemēram, bloka lauks text un paplašinājuma lauks select, saglabātā vērtība ir teksts vai atlases opcija atkarībā no vadīklas, kas to ierakstīja. Komanda šo atslēgu nedeklarē un parāda brīdinājumu:

Apvalks
Warning: Not declared, the fields that store this key have different types: my-theme/cards: tone (text in the block, select in an extension)

Pārdēvējiet vienu no laukiem vai piešķiriet abiem vienādu tipu, lai atslēga tiktu deklarēta.

Uzturiet konfigurāciju aktuālu

Pēc lauku pievienošanas, noņemšanas vai pārdēvēšanas palaidiet komandu vēlreiz un iekļaujiet atjaunināto failu tēmā vai spraudnī. Ģenerējiet no jauna konfigurācijas, kas izveidotas pirms 7.7.5, lai tajās iekļautu pielikumu ID deklarācijas. Esošajā saturā jaunie lauki kļūst pieejami tulkošanai pēc sākotnējā satura atjaunināšanas, kā aprakstīts iepriekš sniegtajā WPML ceļvedī.

Izmantojot --file, komanda izveido trūkstošu failu. Esošā failā tā aizstāj tikai tekstu starp <!-- blockstudio:start --> un <!-- blockstudio:end -->, tāpēc pārējās sadaļas un citu bloku ieraksti paliek nemainīti:

XML
<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>

Lai izmantotu esošu failu, kurā vēl nav marķieru, vienreiz pievienojiet abas marķieru rindas tā gutenberg-blocks elementā vai pievienojiet gutenberg-blocks elementu ar marķieriem, ja failā tāda nav. Ja marķieru nav vai rezultāts nebūtu derīga konfigurācija, komanda failu nemaina un beidzas ar kļūdu.

Ar roku rakstīti ieraksti blokiem Blockstudio, piemēram, translate="0" ieraksti, kas slēpj tehniskās vērtības, vairs nav vajadzīgi, kad ģenerētā sadaļa aptver šo bloku. Komanda brīdina par katru bloku, kas deklarēts vairāk nekā vienu reizi, lai šos ierakstus varētu noņemt.

Attēlu teksti tulkošanas uzdevumos

WPML iekļauj tulkošanas uzdevumā attēlu tekstus no lapā izmantotajiem attēliem: nosaukumu, alternatīvo tekstu, parakstu un aprakstu. Kad uzdevums ir pabeigts, WPML ieraksta tulkotos tekstus mērķa valodas pielikumā un izveido šo pielikumu, ja tāda vēl nav. Skatiet Kā tulkot multividi. WPML atrod attēlus satura <img> tagos, galerijās, izceltajā attēlā un tam zināmajos blokos. Blokā Blockstudio pielikumu ID tiek glabāti bloka komentārā, tāpēc WPML tos neatrod.

Ja WPML ir aktīvs, Blockstudio pievieno attēlu sarakstam pielikumus, kuru vērtības glabājas lapas bloku laukos un kurus WPML ir atradis:

  • files lauki, tostarp slēptie, un attributes lauki ar media — tie paši lauki, kurus bloku redaktors ielādē kā multividi.
  • Lauki grupās, cilnēs, atkārtotāja rindās un iekšējos blokos.
  • paplašinājumu lauki, arī pamata blokos un citu spraudņu blokos, jo to vērtības tiek glabātas paplašinātā bloka atribūtos.

Vērtības, kas nav pielikuma ID, tiek izlaistas. Nekas nav jākonfigurē, un wpml-config.xml netiek izmantots. Ja WPML nav ieslēgts, tulkošanas uzdevumos nekas netiek skenēts un multivides integrācijas klase netiek ielādēta.

Tas ir atsevišķi no pielikumu ID konvertēšanas: ģenerētais XML norāda WPML, kuru tulkoto pielikumu attēlot, savukārt šī integrācija norāda, kurus pielikumu tekstus iekļaut tulkošanas uzdevumā. Virkņu atsauces un tādu ierakstu ID, kas nav pielikumi, multivides uzdevumiem netiek pievienoti. Saglabātās ligzdoto lauku vērtības ir prioritāras pār augšējā līmeņa vērtībām Blockstudio blokos, tāpat kā attēlošanas laikā.

Teksti tiek iekļauti uzdevumā tikai tad, ja ir iespējota kāda no attēlu teksta opcijām sadaļā WPML > Settings > Media Translation: “Automatically detect best options for translating image texts” vai “Translate Media Library texts when translating content”, tāpat kā pamata blokos izmantotajiem attēliem.

Blockstudio attēlus atgriež caur filtru wpml_ids_of_media_used_in_post, kas WPML attiecas uz ieraksta multivides datiem vietnē PostWithMediaFiles. Lai attēlu izslēgtu no uzdevumiem, noņemiet tā ID atzvanā tajā pašā filtrā ar prioritāti, kas lielāka par 10:

PHP
add_filter(
	'wpml_ids_of_media_used_in_post',
	function ( $ids ) {
		return array_values( array_diff( $ids, array( 42 ) ) );
	},
	20
);