Es un dominio de texto necesario para un tema secundario

9

Lo siento por la pregunta de noob.

¿Es necesario un dominio de texto para un tema secundario? Estoy creando un tema infantil simple sin dominio de texto declarado. Entonces, cuando uso cadenas que deben traducirse, debo usar el dominio de texto del tema principal (sí, el tema principal tiene un dominio de texto cargado y también tiene archivos .mo / .po).

Por ejemplo, agregar esta línea en la plantilla de mi tema hijo

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

¿Estará encima de la cadena traducida?

Gracias de antemano

    
pregunta Ayanize 16.12.2016 - 15:42

2 respuestas

7

TL; DR: Si usa cadenas que están en el tema principal, exactamente como se usan en el tema principal, no necesita tener un dominio de texto para el tema secundario.

Pero si usa cadenas que no se usan en el tema principal, para hacerlas traducibles, necesitará otro dominio de texto con archivos de traducción relacionados ( .mo ).

Flujo de trabajo de traducción

Cuando WordPress encuentra una cadena en una función de traducción:

  1. Comprueba si se ha cargado una traducción para el dominio de texto requerido (a través de load_plugin_textdomain o load_theme_textdomain o load_textdomain ), si es así, vaya al punto 3.
  2. Comprueba si la carpeta de traducciones (de forma predeterminada wp-content/languages ) contiene un archivo de dominio de texto coincidente. El archivo de dominio de texto coincidente es "{$domain}-{$locale}.mo" , donde $domain es el dominio de texto de la cadena a traducir y $locale es la configuración regional actual del sitio web. Si no se encuentra ese archivo, se devuelve la cadena original, de lo contrario se carga y WP se reenvía al siguiente punto.
  3. Cuando se carga el dominio de texto, WP busca si la cadena requerida está contenida en ese archivo, si no se devuelve la cadena original, de lo contrario, WP avanza al siguiente punto.
  4. Si la cadena traducida encontrada necesita alguna resolución singular / plural (por ejemplo, cuando se usa _n() ) esas están hechos. De lo contrario, WP avanza al siguiente punto.
  5. Los enganches de filtro se aplican a la cadena traducida (consulte enlace ) y finalmente se devuelve el resultado.

Entonces?

Cuando usa el dominio de texto del tema principal en la función de traducción del tema secundario (asumiendo que el tema principal se envía y carga el archivo de dominio de texto, o tiene un archivo de traducción en la carpeta de traducciones), WordPress llegará al punto 3. en la lista anterior, y si la cadena está disponible en el archivo (porque se usa en el tema principal) se traducirá, de lo contrario no será así.

Significa que las cadenas personalizadas en el tema principal necesitan un archivo de traducción propio.

En teoría, es posible usar el dominio de texto principal en otro archivo de traducción, porque WordPress es capaz de cargar más veces el mismo dominio de texto, "fusionándolos", pero eso tiene problemas porque solo un archivo puede existir en el formato "{$domain}-{$locale}.mo" en las carpetas de traducción (consulte el punto 2. en la lista anterior).

Entonces, en conclusión, la única forma viable de hacer que un tema secundario sea traducible, si contiene cadenas que no se usen en el tema principal, es usar su propio dominio de texto y su propio archivo de traducción.

    
respondido por el gmazzap 16.12.2016 - 23:21
0

Si el tema de su hijo contiene cadenas diferentes que el tema principal.

La forma correcta de usar un dominio de texto diferente en un tema secundario es la función load_child_theme_textdomain() ahora. Puede usarlo de la misma manera que otras funciones de carga _..._dominio de texto.

¡Cuidado!

  

A diferencia de los archivos de idioma de los complementos, un nombre como my_child_theme-de_DE.mo will   No trabajo. Aunque los archivos de idioma de los complementos le permiten especificar   dominio de texto en el nombre del archivo, esto NO funcionará con temas y niños   temas Los archivos de idioma para temas deben incluir el acceso directo de idioma   SOLO .

    
respondido por el docker 28.05.2018 - 12:39

Lea otras preguntas en las etiquetas