¿Cómo mantener el complemento traducido después de las actualizaciones?

9

enlace La carpeta de idiomas de bbpress (wp-content / plugins / bbpress / bbp-languages) tiene esa advertencia:

/**
 * Do not put custom translations here. They will be deleted on bbPress updates.
 *
 * Keep custom bbPress translations in /wp-content/languages/
 */

En realidad, esto no es un problema nuevo y sí tienen razón. Este es un gran problema si utiliza los complementos de WordPress con un idioma que no sea el inglés.

Básicamente traduje bbpress y creé archivos .po y .mo. Los archivos funcionan si los pongo en su carpeta normal wp-content / plugins / bbpress / bbp-languages. Pero como dice la advertencia anterior, eso se eliminará cuando se actualice. Pero el problema es que la traducción no funciona si los coloco en la carpeta wp-content / languages / como se sugiere en bbpress.

Creo que debe haber un gancho o algo que pueda activarlo, pero ¿cuál es la mejor solución para él? Simplemente quiero mantener los archivos de idioma del complemento en wp-content / languages /

    
pregunta Ünsal Korkmaz 08.10.2011 - 17:03

4 respuestas

3

Tiene que reemplazar la llamada al archivo de idioma de BBpress.

Un buen lugar para hacer esto es un archivo específico de idioma en su directorio de idiomas general. Para turco, probablemente sería un archivo llamado tr_TR.php . Se cargará automáticamente y solo si coincide con el idioma de tu blog. No se sobrescribirá.

BBPress no usa la función load_plugin_textdomain , en su lugar usa load_textdomain . Aquí puedes encontrar un filtro:

$mofile = apply_filters( 'load_textdomain_mofile', $mofile, $domain );

Entonces, en su archivo php de idioma, solo agregue un filtro para cambiar la ruta:

function load_bbpress_tr_mofile( $mofile, $domain )
{
    if ( 'bbpress' == $domain )
    {
        // replace this. :)
        return 'FULL_PATH_TO_YOUR_FILE';
    }
    return $mofile;
}
add_filter( 'load_textdomain_mofile', 'load_bbpress_tr_mofile', 10, 2 );
    
respondido por el fuxia 08.10.2011 - 18:09
2

Lo que tienes que hacer es crear un complemento simple que administre el dominio de texto de los complementos instalados. Si no desea tener una solución global, puede agregar el código a su functions.php en su tema.

La idea es instruir a wordpress sobre dónde encontrar traducciones. Internamente, en todos los complementos esto se hace usando algo similar a

load_plugin_textdomain( 'regenerate-thumbnails', false, '/regenerate-thumbnails/localization' );

esta es la función que usarás. Como puede ver aquí , el último argumento se usa para establecer la relación con la ruta del complemento, donde residen los archivos de traducción.

Puede hacer lo que quiera colocando una línea para cada complemento que desee modificar la carpeta de sus idiomas de la siguiente manera.

load_plugin_textdomain('bbpress', false, '../../languages/bbpress');

esto le indicará a WordPress que cargue sus archivos de traducción personalizados desde una carpeta junto a la carpeta plugins que tiene una carpeta llamada bbpress que tiene los archivos de traducción usando el mismo nombre exacto que usa cada complemento.

Su método, que instruye a los dominios de texto para todos los complementos, debe ejecutarse en la fase init de la siguiente manera

function set_myplugins_languages() {
     .... your code here.....
}
add_action('init', 'set_myplugins_languages');

(No olvide marcar esto como respuesta si lo encontró útil)

    
respondido por el Odys 08.10.2011 - 17:54
0

Para que esto funcione, necesita tener los archivos de traducción de WordPress en WP_LANG_DIR ya, y la configuración regional global establecida en ese idioma. Si solo incluye las traducciones para bbPress sin cambiar la configuración regional o tener presentes los archivos de traducción principales de WordPress, nada se traducirá a pesar de que los cargue.

Si desea anular la configuración regional para bbPress solo, debe agregar un filtro a 'bbpress_locale' que le permite anular el archivo bbPress mo.

Si bien es cierto que bbPress 2.0 usa la función load_textdomain (), load_plugin_textdomain () es solo un contenedor para load_textdomain () de todos modos. El método bbPress 2.0 es más robusto y permite la ubicación global de los archivos de traducción, por lo que no los perderá durante la actualización del complemento.

    
respondido por el John James Jacoby 17.11.2011 - 20:35
-1

En mi caso, la creación de una traducción personalizada permanente para el complemento requiere los siguientes pasos (ejemplos para la traducción del complemento ACF):

  1. crea el directorio wp-content/languages/plugins/
  2. copie el archivo de traducción seleccionado .po de la carpeta del complemento lang/ (o cualquier otro con traducción) al wp-content/languages/plugins/ creado (por ejemplo, de lang/acf-pl_PL.po a wp-content/languages/plugins/acf-pl_PL.po )
  3. personaliza la traducción con, por ejemplo, Poedit o cualquier otro programa para editar archivos .po y luego generar .mo y guardar en wp-content/languages/plugins/ (por ejemplo, wp-content/languages/plugins/acf-pl_PL.mo )

De esta manera, la traducción debe conservarse incluso después de la actualización del complemento.

No estoy seguro de que esta estrategia funcione para todos los complementos, pero definitivamente vale la pena intentarlo.

    
respondido por el jmarceli 12.10.2016 - 00:12

Lea otras preguntas en las etiquetas