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

9

Desculpe pela pergunta noob.

Um domínio de texto é necessário para um tema filho? Eu estou construindo um tema filho simples com nenhum domínio de texto declarado. Então, quando eu uso strings que devem ser traduzidas, devo usar o domínio de texto do tema pai (o tema pai sim tem o domínio de texto carregado e também tem arquivos .mo / .po).

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

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

A string acima será traduzida?

Obrigado antecipadamente

    
por Ayanize 16.12.2016 / 15:42

2 respostas

7

TL; DR: Se você usar strings no tema pai, exaclty como elas são usadas no tema pai, não será necessário 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, será necessário outro domínio de texto com arquivos de tradução relacionados ( .mo ).

Fluxo de trabalho de tradução

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

  1. Verifica se uma tradução para o domínio de texto obrigatório foi carregada (via load_plugin_textdomain ou load_theme_textdomain ou 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 texto com texto correspondente. O arquivo de texto de domínio correspondente é "{$domain}-{$locale}.mo" , em que $domain é o domínio de texto da string a ser traduzido e $locale é a localidade atual do site. Se esse arquivo não for encontrado, a string original será retornada, caso contrário, ele será carregado e o WP encaminhará para o próximo ponto.
  3. Quando o textdomain é carregado, o WP verifica se a string necessária está contida nesse arquivo, se não a string original é 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, ao usar _n() ), está feito. Caso contrário, WP encaminha para o próximo ponto.
  5. Ganchos de filtro são aplicados na string traduzida (consulte enlace ) e finalmente o resultado é retornado.

Então?

Quando você usa o domínio de texto do tema pai na função de tradução do tema filho (assumindo que o tema pai é enviado e carrega o arquivo texto-domínio ou tem um arquivo de tradução na pasta de traduções), o WordPress chegará ao ponto 3. na lista acima, e assim, se a string estiver disponível no arquivo (porque é usada no tema pai), ela será traduzida, caso contrário, não será assim.

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

Em teoria, é possível usar textdomain pai em outro arquivo de tradução, porque o WordPress é capaz de carregar mais vezes o mesmo domínio de texto, "fundindo-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).

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

    
por gmazzap 16.12.2016 / 23:21
0

Se o tema filho contiver sequências diferentes do tema pai.

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

Cuidado!

  

Diferentemente dos arquivos de idioma do plugin, um nome como my_child_theme-de_DE.mo   Não funciona. Embora os arquivos de idioma do plugin permitam que você especifique   texto-domínio no nome do arquivo, isso não funcionará com temas e filho   temas. Arquivos de idioma para temas devem incluir o atalho de idioma   APENAS .

    
por docker 28.05.2018 / 12:39