É um domínio de texto necessário para um tema filho

8

Desculpe pela pergunta noob.

É necessário um domínio de texto para um tema filho? Estou criando um tema filho simples sem nenhum domínio de texto declarado. Portanto, quando eu uso seqüências de caracteres a serem traduzidas, devo usar o domínio de texto do tema pai (sim, o tema pai carrega o domínio de texto e também os arquivos .mo / .po).

Por exemplo, adicionando esta linha no meu modelo de tema filho

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

A string acima será traduzida?

desde já, obrigado

Ayanize
fonte

Respostas:

7

TL; DR: Se você usar cadeias de caracteres que estão no tema pai, exatamente como elas são usadas no tema pai, não precisará ter um domínio de texto para o tema filho.

Mas se você usar strings que não são usadas no tema pai, para torná-las traduzíveis, precisará de outro domínio de texto com .moarquivos de tradução ( ) relacionados .


Fluxo de trabalho de tradução

Quando o WordPress encontra uma string em uma função de tradução, ela:

  1. Verifica se uma tradução para o domínio de texto necessário foi carregada (via load_plugin_textdomainou load_theme_textdomainou load_textdomain); se assim for, vá para o ponto 3.
  2. Verifica se a pasta de traduções (por padrão wp-content/languages) contém um arquivo de domínio de texto correspondente. O arquivo de domínio de texto correspondente é "{$domain}-{$locale}.mo"onde $domainestá o domínio de texto da sequência a ser traduzida e $localeé a localidade atual do site. Se esse arquivo não for encontrado, a string original será retornada, caso contrário, ela será carregada e o WP encaminhará para o próximo ponto.
  3. Quando o domínio de texto é carregado, o WP verifica se a sequência necessária está contida nesse arquivo, se não a sequência original for retornada, caso contrário, o WP encaminha para o próximo ponto.
  4. Se a string traduzida encontrada precisar de alguma resolução singular / plural (por exemplo, quando estiver usando _n()), isso será feito. Caso contrário, o WP encaminha para o próximo ponto.
  5. Os ganchos de filtro são aplicados na string traduzida (consulte https://developer.wordpress.org/?s=gettext&post_type%5B%5D=wp-parser-hook ) e, finalmente, o resultado é retornado.

Assim?

Quando você usa o domínio de texto do tema pai na função de tradução do tema filho (supondo que o tema pai seja enviado e carregue o arquivo de domínio de texto ou ele tenha um arquivo de tradução na pasta de traduções), o WordPress chegará ao ponto 3. na lista acima e, portanto, se a string está disponível no arquivo (porque usada no tema pai) será traduzida, caso contrário não.

Isso significa que as strings personalizadas no tema pai precisam de um arquivo de tradução próprio.

Em teoria, é possível usar o domínio de texto pai em outro arquivo de tradução, porque o WordPress é capaz de carregar mais vezes o mesmo domínio de texto, "mesclando-os", mas isso tem problemas porque apenas um arquivo pode existir no formato "{$domain}-{$locale}.mo"nas pastas de tradução ( veja o ponto 2. na lista acima).

Portanto, em conclusão, a única maneira viável de tornar um tema filho traduzível, se ele contiver cadeias não usadas no tema pai, é usar o próprio domínio de texto e o próprio arquivo de tradução.

gmazzap
fonte
Excelente resposta! Mais uma pergunta - digamos, o tema pai tem essa sequência "background-color" e, no filho também, essa sequência existe. Então, neste caso, posso usar com segurança o domínio de texto do tema pai? __ ('cor de fundo', 'domínio do texto pai')?
Ayanize
sim @Ayanize se o tema pai tiver, __('background-color', 'parent-text-domain')você pode usar o mesmo no tema filho sem precisar fazer mais nada para traduzi-lo.
gmazzap
0

Se o tema filho contiver cadeias diferentes do tema principal.

A maneira correta de usar um domínio de texto diferente em um tema filho é a load_child_theme_textdomain()função agora. Você pode usá-lo da mesma maneira que outras funções de carregamento _..._ textdomain.

Cuidado!

Ao contrário dos arquivos de idioma do plug-in, um nome como my_child_theme-de_DE.mo NÃO funcionará. Embora os arquivos de idioma do plug-in permitam especificar o domínio de texto no nome do arquivo, isso NÃO funcionará com temas e temas filhos. Arquivos de idiomas para temas devem incluir SOMENTE o atalho de idioma .

estivador
fonte