Traducir un plugin usando archivos .po .mo
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');

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 archivowp-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

(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:

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.

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

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.

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

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.

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

poeditor.com ya no existe...
