È un dominio di testo necessario per un tema figlio


8

Ci scusiamo per la domanda noob.

È necessario un dominio di testo per un tema figlio? Sto costruendo un semplice tema figlio senza alcun dominio di testo dichiarato. Quindi, quando uso stringhe che devono essere tradotte, dovrei usare il dominio di testo del tema principale (sì, il tema principale ha il dominio di testo caricato e ha anche file .mo / .po).

Ad esempio aggiungendo questa riga nel modello del tema di mio figlio

<?php __('Some String', 'parent-text-domain');> 

Sarà sopra la stringa tradotta?

Grazie in anticipo

Risposte:


7

TL; DR: se si utilizzano stringhe che si trovano nel tema principale, esattamente come vengono utilizzate nel tema principale, non è necessario disporre di un dominio di testo per il tema figlio.

Ma se usi stringhe non utilizzate nel tema principale, per renderle traducibili, avrai bisogno di un altro dominio di testo con .mofile di traduzione ( ) correlati .


Flusso di lavoro della traduzione

Quando WordPress incontra una stringa in una funzione di traduzione, essa:

  1. Verifica se è stata caricata una traduzione per il dominio di testo richiesto (tramite load_plugin_textdomaino load_theme_textdomaino load_textdomain), in tal caso vai al punto 3.
  2. Verifica se la cartella delle traduzioni (per impostazione predefinita wp-content/languages) contiene un file di dominio di testo corrispondente. Il file textdomain corrispondente è "{$domain}-{$locale}.mo"dove si $domaintrova il dominio di testo della stringa da tradurre ed $localeè la locale corrente per il sito Web. Se quel file non viene trovato, viene restituita la stringa originale, altrimenti viene caricata e WP passa al punto successivo.
  3. Quando viene caricato il textdomain, WP verifica se la stringa richiesta è contenuta in quel file, se non viene restituita la stringa originale, altrimenti WP passa al punto successivo.
  4. Se la stringa tradotta trovata necessita di una risoluzione singolare / plurale (ad es. Quando si usa _n()), questi sono fatti. In caso contrario, WP passa al punto successivo.
  5. Gli hook di filtro vengono applicati sulla stringa tradotta (vedere https://developer.wordpress.org/?s=gettext&post_type%5B%5D=wp-parser-hook ) e infine viene restituito il risultato.

Così?

Quando usi il dominio di testo del tema principale nella funzione di traduzione dal tema secondario (supponendo che il tema principale venga spedito e carichi il file textdomain o che abbia un file di traduzione nella cartella delle traduzioni), WordPress arriverà al punto 3. nell'elenco sopra, e quindi se la stringa è disponibile nel file (perché utilizzata nel tema principale) verrà tradotta, altrimenti non è così.

Significa che le stringhe personalizzate nel tema principale richiedono il proprio file di traduzione.

In teoria, è possibile utilizzare il textdomain principale in un altro file di traduzione, perché WordPress è in grado di caricare più volte lo stesso dominio di testo, "unendoli", ma ciò ha dei problemi perché nel formato può esistere un solo file "{$domain}-{$locale}.mo"nelle cartelle di traduzione ( vedere il punto 2. nell'elenco sopra).

Quindi, in conclusione, l'unico modo possibile per rendere traducibile un tema figlio, se contiene stringhe non utilizzate nel tema principale, è utilizzare il proprio dominio di testo e il proprio file di traduzione.


Risposta eccellente! Un'altra domanda - diciamo che il tema principale ha questa stringa "background-color" e anche nel bambino questa stringa esiste. Quindi, in questo caso, posso tranquillamente utilizzare il dominio di testo del tema principale? __ ('background-color', 'parent-text-domain')?
Ayanize,

sì @Ayanize se il tema principale è __('background-color', 'parent-text-domain')che puoi utilizzare lo stesso nel tema figlio senza dover fare nient'altro per farlo tradurre.
gmazzap

0

Se il tema del tuo bambino contiene stringhe diverse rispetto al tema principale.

Il modo corretto di utilizzare un diverso dominio di testo in un tema figlio è la load_child_theme_textdomain()funzione ora. Puoi usarlo allo stesso modo delle altre funzioni load _..._ textdomain.

Attenzione!

A differenza dei file di lingua dei plugin, un nome come my_child_theme-de_DE.mo NON funzionerà. Sebbene i file della lingua del plug-in consentano di specificare il dominio di testo nel nome file, NON funzionerà con temi e temi figlio. I file di lingua per i temi devono includere SOLO il collegamento alla lingua .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.