Tradurre un plugin utilizzando i file .po .mo
Voglio tradurre questo plugin.
Il plugin è già stato tradotto in altre lingue e ha i file .pot
per aggiungere nuove lingue (per quanto ho capito dalla descrizione).
Come posso creare i file .po
e .mo
per la mia nuova lingua e renderli accessibili in modo che vengano utilizzati dal plugin? Ho provato a definire la lingua russa nel mio file wp-config.php
inserendo la definizione qui sotto:
define ('WPLANG', 'ru_RU');

L'Editor
Ce ne sono altri, ma il più utilizzato è: Poedit, un editor cross-platform per cataloghi gettext (file .po).
I Formati
.mo
sta per Machine Object
-- esportazione compilata del file.po
che viene utilizzata da WordPress.po
sta per Portable Object
-- file di testo modificabile contenente le stringhe di traduzione
-- basato sul file master.pot
, utilizzando la funzione Update from POT file di PoEdit
-- alcune persone distribuiscono questo come file master, ma dovrebbe essere utilizzato solo per le traduzioni.pot
sta per Portable Object Template
-- file di testo modificabile utilizzato per estrarre tutte le stringhe traducibili da WordPress stesso, dai Temi e dai Plugin, utilizzando la funzione Update from Sources di PoEdit
La Procedura
- Duplica il file .pot e rinominalo in
plugin-basename-lang_COUNTRY.po
- Esempio per il caso del plugin citato:
subscribe-reloaded-pt_BR.po
-- pt_BR significa Portoghese Brasile, ma molte lingue non hanno una variante per paese...
-- dovrai inserire la tua lingua WPLANG
nel filewp-config.php
deve essere impostato sulla tua lingua, ad esempiopt_BR
- Ogni volta che salvi il file
.po
, PoEdit genera automaticamente un file.mo
, che è quello che utilizza WordPress e sostanzialmente l'unico che devi caricare
Osservazioni
- Se fai una traduzione completa o parziale ma significativa, inviala all'autore del plugin così che possa includerla nel Repository e tu possa ottenere il riconoscimento
- Non dimenticare di fare un backup della tua traduzione, perché se aggiorni il plugin il tuo file andrà perso
- Il suggerimento del plugin di @user17078 è piuttosto interessante, ma non l'ho mai usato molto

(Ecco un ESEMPIO di traduzione in ITALIANO. MODIFICARE i valori secondo le proprie esigenze.)
In ogni intestazione del plugin, c'è un nome univoco. (ad esempio:
/*
Plugin Name: my-pluginname
.......
*/
poi, nella cartella del plugin, crea una cartella "languages";
quindi, nel file .php del tuo plugin (da qualche parte all'inizio), inserisci il codice di inizializzazione:
class load_language
{
public function __construct()
{
add_action('init', array($this, 'load_my_transl'));
}
public function load_my_transl()
{
load_plugin_textdomain('my-pluginname', FALSE, dirname(plugin_basename(__FILE__)).'/languages/');
}
}
$zzzz = new load_language;
quindi apri un editor di testo e inserisci questo codice (NOTA CHE stiamo aggiungendo solo due messaggi di esempio, "ciao" e "arrivederci", quindi puoi AGGIUNGERE TANTI MESSAGGI QUANTI VUOI con righe simili).
# Traduzioni in italiano per il pacchetto PACKAGE.
# Copyright (C) 2012 IL DETENTORE DEL COPYRIGHT DEL PACCHETTO
# Questo file è distribuito con la stessa licenza del pacchetto PACKAGE.
# Generato automaticamente, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: my-pluginname 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: Generato automaticamente\n"
"Language-Team: nessuno\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"
#: mypluginindex.php:87 (è solo una nota per ricordare dove appare il nostro codice)
msgid "mymessage1"
msgstr "Ciao"
#: mypluginindex.php:88
msgid "mymessage2"
msgstr "Arrivederci"
quindi salva questo file come "my-pluginname-it_IT.po" (nota che .po è un'estensione del file, quindi controlla che il tuo programma di editor di testo non abbia salvato come "my-pluginname-it_IT.po.TXT").
quindi scarica il software POEDIT e apri questo file. Poi modifica il campo "traduzione" e salva come "my-pluginname-it_IT" verranno generati due file (Se poEdit non genera automaticamente il secondo file .mo, vai su File -> Preferenze -> Editor e seleziona la casella che dice "Compila automaticamente il file .mo al salvataggio"),
quindi inserisci questi due file nella cartella "languages".
dopo questo, apri wp-config.php e trova questo codice:
define ('WPLANG, '');
e modificalo in
define ('WPLANG, 'it_IT');
È tutto. Quando WordPress viene caricato, leggerà il file di lingua del tuo plugin, con il prefisso -it_IT.
Quindi, nel file .php del plugin, invece di:
echo "Qualcosa di stringa";
dovresti usare:
echo __("mymessage1", 'my-pluginname');
Finito. Ora dovresti testare il tuo plugin.
p.s. link utilizzati:

Ho provato questo con il mio tema. In header.php, ho echo __("thanks-for-visiting", 'transparent');
. In theme\languages\transparent-en_US.po, ho msgid "thanks-for-visiting"
msgstr "Ciao! Grazie per la visita. Dai un'occhiata in giro e iscriviti a "
. Questo mostra "thanks-for-visiting" sul front end.

Puoi provare questo plugin codestyling-localization:. Puoi tradurre i tuoi plugin e temi utilizzandolo.

Questo è il miglior plugin di traduzione che abbia mai visto. Questo plugin può surclassare Poedit in qualsiasi momento e la parte migliore è che è gratuito e intuitivo. Questa risposta dovrebbe essere votata positivamente almeno.

Sembra una buona alternativa: https://wordpress.org/plugins/say-what/

Suggerisco anche http://poeditor.com/. È uno strumento di traduzione basato sul web che funziona molto bene con file .po, .mo, .pot e altri tipi di file.

Un visitatore ha proposto una modifica puntando a un nuovo plugin per questo servizio: http://wordpress.org/extend/plugins/poeditor/

poeditor.com non esiste più...
