Traducir un plugin usando archivos .po .mo

2 jul 2012, 22:20:10
Vistas: 117K
Votos: 39

Quiero traducir este plugin.

El plugin ya ha sido traducido a otros idiomas y tiene archivos .pot para agregar nuevos idiomas (según lo que entendí de la descripción).

¿Cómo puedo crear archivos .po y .mo para mi nuevo idioma y hacerlos accesibles para que sean utilizados por el plugin? He intentado definir el idioma ruso en mi archivo wp-config.php insertando la siguiente definición:

define ('WPLANG', 'ru_RU');
0
Todas las respuestas a la pregunta 5
1
50

El Editor

Existen otros, pero este es el más utilizado: Poedit, un editor de catálogos gettext (.po) multiplataforma.

Los Formatos

  • .mo significa Machine Object (Objeto Máquina)
    -- exportación compilada del archivo .po que utiliza WordPress
  • .po significa Portable Object (Objeto Portable)
    -- archivo de texto editable con las cadenas de traducción
    -- basado en el archivo maestro .pot, usando la función Actualizar desde archivo POT de PoEdit
    -- algunas personas distribuyen este como archivo maestro, pero debería usarse solo para traducciones
  • .pot significa Portable Object Template (Plantilla de Objeto Portable)
    -- archivo de texto editable usado para extraer todas las cadenas traducibles de WordPress, temas y plugins, usando la función Actualizar desde Fuentes de PoEdit

El Procedimiento

  • Duplica el archivo .pot y renómbralo a plugin-basename-lang_PAIS.po
  • Ejemplo para el caso del plugin referenciado: subscribe-reloaded-pt_BR.po
    -- pt_BR significa Portugués de Brasil, pero muchos idiomas no tienen una variación por país...
    -- tendrás que reemplazarlo con tu propio idioma
  • WPLANG en el archivo wp-config.php debe configurarse a tu idioma, ej. pt_BR
  • Cada vez que guardes el archivo .po, PoEdit genera automáticamente un archivo .mo, que es el que usa WordPress y básicamente el único que necesitas subir

Observaciones

  • Si realizas una traducción completa o parcial decente, envíala al autor del plugin para que pueda incluirla en el Repositorio y obtengas crédito por ello
  • No olvides hacer una copia de seguridad de tu traducción, porque si actualizas el plugin tu archivo se perderá
  • La sugerencia del plugin de @user17078 es bastante buena, pero nunca lo usé mucho
3 jul 2012 01:02:36
Comentarios

¿Cuánto tiempo se supone que debe tardar el nuevo archivo mo/po en tener efecto?

Nemo Nemo
14 dic 2015 02:30:18
1

(Aquí hay un EJEMPLO de traducción al ESPAÑOL. CAMBIA los valores personalizados a los que DESEES.)

en la cabecera de cada plugin, hay un nombre único. (por ejemplo:

/*
Plugin Name: mi-plugin
.......
*/

luego, en la carpeta de ese plugin, crea una carpeta "languages";

después, en el archivo .php de tu plugin (en alguna parte al principio), inserta el código de inicialización:

class load_language 
{
    public function __construct()
    {
    add_action('init', array($this, 'load_my_transl'));
    }

     public function load_my_transl()
    {
        load_plugin_textdomain('mi-plugin', FALSE, dirname(plugin_basename(__FILE__)).'/languages/');
    }
}

$zzzz = new load_language;

luego abre cualquier editor de texto e inserta un código como este (NOTA, que solo estamos añadiendo dos mensajes de ejemplo, "hola" y "adiós", así que puedes AÑADIR TANTOS mensajes COMO QUIERAS con líneas similares).

# Traducciones al español para el paquete PACKAGE.
# Copyright (C) 2012 EL TITULAR DE LOS DERECHOS DE AUTOR DEL PAQUETE
# Este archivo se distribuye bajo la misma licencia que el paquete PACKAGE.
# Generado automáticamente, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: mi-plugin 1.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-08-06 13:46-0400\n"
"PO-Revision-Date: 2013-03-21 11:20+0400\n"
"Last-Translator: Generado automáticamente\n"
"Language-Team: ninguno\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"X-Poedit-SourceCharset: iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 1.5.4\n"


#: mipluginindex.php:87 (es solo una línea de nota, para recordar dónde aparece nuestro código)
msgid "mimensaje1"
msgstr "Hola"

#: mipluginindex.php:88
msgid "mimensaje2"
msgstr "Adiós"

luego guarda este archivo como "mi-plugin-es_ES.po" (nota que .po es una extensión de archivo, así que verifica que tu editor de texto no lo haya guardado como "mi-plugin-es_ES.po.TXT").

después descarga el software POEDIT y abre este archivo. Luego edita el campo de "traducción" y guarda como "mi-plugin-es_ES" se generarán dos archivos (Si PoEdit no genera automáticamente el segundo archivo .mo, ve a Archivo -> Preferencias -> Editor y marca la casilla que dice "Compilar automáticamente el archivo .mo al guardar"),

luego coloca esos dos archivos en la carpeta "languages".

después de esto, abre wp-config.php y busca este código:

define ('WPLANG', '');

y cámbialo por

define ('WPLANG', 'es_ES');

Eso es todo. Cuando WordPress se cargue, leerá el archivo de idioma de tu plugin, con el prefijo -es_ES.

Así, en el archivo .php del plugin, en lugar de:

echo "Algún texto";

deberías usar:

echo __("mimensaje1", 'mi-plugin');



Terminado. Ahora deberías probar tu plugin.

p.d. enlaces utilizados:

25 oct 2013 02:37:36
Comentarios

Probé esto con mi tema. En header.php, tengo echo __("thanks-for-visiting", 'transparent');. En theme\languages\transparent-en_US.po, tengo msgid "thanks-for-visiting" msgstr "¡Hola! Gracias por visitarnos. Echa un vistazo y suscríbete al ". Esto muestra "thanks-for-visiting" en el front end.

Steve Steve
10 mar 2014 08:09:07
4

Puedes probar este plugin de codestyling-localization. Con él puedes traducir tus plugins y temas.

2 jul 2012 23:20:42
Comentarios

Este es el mejor plugin de traducción que he visto. Este plugin puede superar a poedit cualquier día y lo mejor es que es gratuito y fácil de usar. Esta respuesta debería ser votada positivamente.

Gogol Gogol
2 oct 2014 12:37:10

Ya no existe.

Chris Cox Chris Cox
3 jun 2015 14:27:03

Esta parece una buena alternativa: https://wordpress.org/plugins/say-what/

jetlej jetlej
10 jun 2015 21:36:29

@jetlej interesante, aunque parece no funcionar para mi archivo po :/

Nemo Nemo
14 dic 2015 02:29:49
0

Querrás usar POEdit. Es una aplicación gratuita para crear archivos .po/.mo.

Escribí un tutorial bastante detallado sobre todo el tema aquí. Puedes saltar al Paso 3 - Crear el Archivo de Traducción para el Dominio de Texto.

3 jul 2012 00:29:23
2

También sugiero http://poeditor.com/. Es una herramienta de traducción basada en web que funciona muy bien con archivos .po, .mo, .pot y otros tipos de archivos.

29 ene 2013 13:56:33
Comentarios

Un visitante propuso una edición señalando un nuevo plugin para este servicio: http://wordpress.org/extend/plugins/poeditor/

brasofilo brasofilo
17 may 2013 10:33:15

poeditor.com ya no existe...

Cypher Cypher
27 abr 2020 20:15:47