Traducerea unui plugin folosind fișiere .po și .mo
Vreau să traduc acest plugin.
Plugin-ul a fost deja tradus în alte limbi și are fișiere .pot
pentru adăugarea de noi limbi (din câte am înțeles din descriere).
Cum pot crea fișiere .po
și .mo
pentru noua mea limbă și cum le fac accesibile pentru a fi utilizate de plugin? Am încercat să definesc limba rusă în fișierul meu wp-config.php
inserând definiția de mai jos:
define ('WPLANG', 'ru_RU');

Editorul
Există și altele, dar cel mai folosit este: Poedit, un editor cross-platform pentru fișierele de cataloage gettext (.po).
Formatele
.mo
înseamnă Machine Object (Obiect Mașină)
-- export compilat al fișierului.po
care este folosit de WordPress.po
înseamnă Portable Object (Obiect Portabil)
-- fișier text editabil care conține șirurile de traducere
-- bazat pe fișierul master.pot
, folosind funcția Update from POT file din PoEdit
-- unii distribuie acest fișier ca master, dar ar trebui folosit doar pentru traduceri.pot
înseamnă Portable Object Template (Șablon Obiect Portabil)
-- fișier text editabil folosit pentru a extrage toate șirurile traductibile din WordPress, Tematici și Plugin-uri, utilizând funcția Update from Sources din PoEdit
Procedura
- Duplică fișierul .pot și redenumește-l în
plugin-basename-limbă_ȚARĂ.po
- Exemplu pentru cazul plugin-ului menționat:
subscribe-reloaded-pt_BR.po
-- pt_BR înseamnă Portugheză Brazilia, dar multe limbi nu au o variație pe țară...
-- va trebui să completezi cu propria limbă WPLANG
în fișierulwp-config.php
trebuie setat la limba ta, de ex.,ro_RO
- De fiecare dată când salvezi fișierul
.po
, PoEdit generează automat un fișier.mo
, care este cel folosit de WordPress și practic singurul pe care trebuie să-l încarci
Observații
- Dacă realizezi o traducere completă sau decent parțială, trimite-o autorului plugin-ului pentru a o include în Repository și vei primi credit pentru asta
- Nu uita să faci o copie de rezervă a traducerii tale, deoarece dacă faci upgrade la plugin, fișierul tău va fi pierdut
- Sugestia plugin-ului @user17078 este destul de bună, dar nu am folosit-o prea mult

(Iată un EXEMPLU de traducere în ROMÂNĂ. SCHIMBAȚI detaliile cu cele dorite de dumneavoastră.)
în fiecare fișier principal al plugin-ului, există un nume unic. (de exemplu:
/*
Plugin Name: my-pluginname
.......
*/
apoi, în folderul acelui plugin, creați un folder "languages";
apoi, în fișierul .php al plugin-ului (undeva în partea de sus), inserați codul de inițializare:
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;
apoi deschideți orice editor de text și inserați următorul cod (OBSERVAȚI că adăugăm doar două mesaje exemplu, "hello" și "bye", deci puteți ADĂUGA ORICÂTE mesaje DORIȚI cu linii similare).
# Traduceri în engleză pentru pachetul PACKAGE.
# Copyright (C) 2012 DEȚINĂTORUL DE COPYRIGHT AL PACHETULUI
# Acest fișier este distribuit sub aceeași licență ca pachetul PACKAGE.
# Generat automat, 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: Generat automat\n"
"Language-Team: niciunul\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 (este doar o linie de notă, pentru a reaminti unde apare codul nostru)
msgid "mymessage1"
msgstr "Bună"
#: mypluginindex.php:88
msgid "mymessage2"
msgstr "La revedere"
apoi salvați acest fișier ca "my-pluginname-en_US.po" (observați că .po este extensia fișierului, deci verificați că programul dumneavoastră de editare text nu a salvat ca "my-pluginname-en_US.po.TXT").
apoi descărcați software-ul POEDIT și deschideți acest fișier. apoi editați câmpul "translation" și salvați ca "my-pluginname-ro_RO" vor fi generate două fișiere (Dacă poEdit nu generează automat al doilea fișier .mo, mergeți la File -> Preferences -> Editor și bifați caseta care spune "Automatically compile .mo file on save"),
apoi puneți aceste două fișiere în folderul "languages".
după aceasta, deschideți wp-config.php și găsiți acest cod:
define ('WPLANG, '');
și schimbați în
define ('WPLANG, 'ro_RO');
Asta e tot. Când WordPress se încarcă, va citi fișierul de limbă al plugin-ului dumneavoastră, cu prefixul -ro_RO.
Deci, în fișierul .php al plugin-ului, în loc de:
echo "Something string";
ar trebui să folosiți:
echo __("mymessage1", 'my-pluginname');
Gata. Acum ar trebui să testați plugin-ul dumneavoastră.
p.s. link-uri folosite:

Am încercat asta cu tema mea. În header.php, am echo __("thanks-for-visiting", 'transparent');
. În theme\languages\transparent-en_US.po, am msgid "thanks-for-visiting"
msgstr "Bună! Mulțumim pentru vizită. Răsfoiți și abonați-vă la "
. Acest lucru afișează "thanks-for-visiting" în front-end.

Puteți încerca acest plugin codestyling-localization:. Puteți traduce plugin-urile și temele folosind acest instrument.

Acesta este cel mai bun plugin de traducere pe care l-am văzut vreodată. Acest plugin poate înlocui oricând poedit, iar partea cea mai bună este că este gratuit și ușor de utilizat. Acest răspuns ar trebui votat în sus cel puțin.

Aceasta pare o alternativă bună: https://wordpress.org/plugins/say-what/

Sugerez, de asemenea, http://poeditor.com/. Este un instrument de traducere bazat pe web care funcționează excelent cu fișiere .po, .mo, .pot și alte tipuri de fișiere.

Un vizitator a propus o editare care indică un nou plugin pentru acest serviciu: http://wordpress.org/extend/plugins/poeditor/

poeditor.com nu mai există...
