Soporte » Plugins y Hacks » Problemas traduciendo un plugin

  • Resuelto hartum

    (@hartum)


    Hola muy buenas

    Estoy creando un plugin que cambia «el aspecto» del admin de WP y aunque lo tengo casi listo para lanzar, he tropezado con el tema de la internacionalización.

    He creado en la raíz del plugin una carpeta que se llama /languages, dentro he creado una archivo .pot (minimal-admin.pot), con este aspecto:

    # Copyright (C) 2023 Minimal Admin
    # This file is distributed under the GPL v2 or later.
    msgid ""
    msgstr ""
    "Project-Id-Version: Minimal Admin 1.0.0\n"
    "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/w3-total-cache\n"
    "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
    "Language-Team: LANGUAGE <LL@li.org>\n"
    "MIME-Version: 1.0\n"
    "Content-Type: text/plain; charset=UTF-8\n"
    "Content-Transfer-Encoding: 8bit\n"
    "POT-Creation-Date: 2023-04-23T21:21:22+00:00\n"
    "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
    "X-Generator: WP-CLI 2.5.0\n"
    "X-Domain: minimal-admin\n"
    
    #. Settings theme tab
    #: admin/settings/settings.php:19
    msgid "Light/Dark"
    msgstr ""
    
    #. Settings menu tab
    msgid "Menu"
    msgstr ""
    
    #. Settings brand tab
    msgid "Brand"
    msgstr ""

    A partir de ahí he generado los archivos minimal-admin_ES.po y minimal-admin_ES.mo

    Luego en mi archivo .php principal del plugin defino el Text Domain así:

    /**
    
    * @package Minimal Admin
    * @version 0.0.1
    * Plugin Name: Minimal Admin
    * Plugin URI: http://hartum.net
    * Description: Bring your admin panel into the 21st century with this minimalist design and give your customers a professional looking interface.
    * Author: Hartum
    * Version: 0.0.1
    * Author URI: http://hartum.net/
    * Text Domain: minimal-admin
    * License: GPLv2 or later.
    * License URI: https://www.gnu.org/licenses/gpl - 2.0.html
    */

    Y añado el textdomain lo primero del todo, así*:

    //--- ADD LANGUAGES BY LOAD
    add_action( 'plugins_loaded', 'wpdocs_load_textdomain' );
    function wpdocs_load_textdomain() {
        load_plugin_textdomain( 'minimal-admin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' ); 
      }

    Finalmente, donde quiero traducir mi cadena (settings.php), lo hago de esta manera:

    <?php _e('Light/Dark', 'minimal-admin'); ?>

    Pero no parece funcionar 🙁

    ¿Alguna idea u orientación de que estoy haciendo mal?
    Muchas gracias!!

    *PD: También lo he intentado con el action ‘init’ y ‘admin_init’, en lugar de ‘plugins_loaded’

    • Este debate fue modificado hace 1 mes, 1 semana por hartum.
Viendo 2 respuestas - de la 1 a la 2 (de un total de 2)
  • Moderador kallookoo

    (@kallookoo)

    Hola @hartum

    Por lo que comentas el problema esta en el nombre de los archivos *.mo, deberia ser «minimal-admin-locale.mo»

    Revisa este link (en ingles); https://developer.wordpress.org/plugins/internationalization/

    Resumiendo, el locale esta compuesto por el idioma_pais por ejemplo para el español de españa seria es_ES y para argentina seria es_AR.

    Iniciador del debate hartum

    (@hartum)

    Primero de todo gracias, y disculpa por tardar tanto en contestar, he estado requeteliado.

    Segundo, funcionooo!!!

    Aunque confieso que no a la primera, porque soy un poco torpe y porque además creo que no tenía bien algún paso, así que voy a poner la respuesta mucho mas detallada aquí, por si alguien mas se encuentra con el problema.

    1) Utilizo el programa Poedit para hacer los archivos «.po» y «.mo»,
    pues bien creo que no generé correctamente el «.mo», si alguien mas está utilizándolo tiene que usar esta opción:

    2) Una vez te has asegurado de que el archivo «.mo» y «.po» están bien generados tienes que nombrarlos bien, aquí es donde yo me liaba. Si mi plugin se llama minimal-admin y mi domain tambien se llama
    minimal-admin, los archivos deben llamarse:
    «minimal-admin-es_ES.mo»
    «minimal-admin-es_ES.po»

    Evidentemente si tu archivo está traducido como español de Argentina los archivos se llamarían:
    «minimal-admin-es_AR.mo»
    «minimal-admin-es_AR.po»

Viendo 2 respuestas - de la 1 a la 2 (de un total de 2)
  • Debes estar registrado para responder a este debate.