Traduci un plugin usando i file .po .mo


34

Voglio tradurre questo plugin.

Il plug-in è già stato tradotto in altre lingue e ha .potfile per l'aggiunta di nuove lingue (per quanto ho capito dalla descrizione).

Come faccio a creare .poe .mofile per la mia nuova lingua e renderli accessibili in modo che possano essere utilizzati dal plugin? Ho provato a definire la lingua russa nel mio wp-config.phpfile inserendo la definizione seguente:

define ('WPLANG', 'ru_RU');

Risposte:


44

L'editore

Ce ne sono altri, ma questo è molto usato: Poedit , un editor di cataloghi gettext multipiattaforma (file .po).

I formati

  • .mosta per Machine Object
    - esportazione compilata del .pofile utilizzato da WordPress
  • .posta per Portable Object
    - file di testo modificabile con le stringhe delle traduzioni
    - basato sul .potfile master , usando la funzione PoEdit del file POT da aggiornamento
    - alcune persone lo distribuiscono come file master, ma dovrebbe essere usato solo per le traduzioni
  • .potsta per Portable Object Template
    - file di testo modificabile usato per catturare tutte le stringhe traducibili dallo stesso WordPress e temi e plugin, usando la funzione Update from Sources PoEdit

La procedura

  • Duplica il file .pot e rinominalo in plugin-basename-lang_COUNTRY.po
  • Esempio per il caso del plug-in di riferimento: - pt_BR significa portoghese Brasile, ma molte lingue non hanno una variazione di paese ... - dovrai compilare con la tua linguasubscribe-reloaded-pt_BR.po

  • WPLANGnel wp-config.phpfile deve essere impostato nella tua lingua, ad es.pt_BR
  • Ogni volta che salvi il .pofile, PoEdit genera automaticamente un .mofile, che è quello che WordPress usa e sostanzialmente l'unico che devi caricare

osservazioni

  • Se fate una completa o una traduzione parziale decente, lo presenta alla all'autore del filtro, così da poter includere nel repository e si ottiene accreditati per esso
  • Non dimenticare di fare un backup della tua traduzione, perché se aggiorni il plugin il tuo file andrà perso
  • Il suggerimento del plugin @ user17078 è abbastanza carino, ma non l'ho mai usato molto

1
Quanto tempo dovrebbe impiegare il nuovo file mo / po per avere effetto?
Nemo,

8

Si può provare questo plug codestyling-localizzazione: . Puoi tradurre plugin e temi usando questo.


1
Questo è il miglior plugin di traduzione che abbia mai visto. Questo plugin può possedere poedit ogni giorno e la parte migliore è che è gratuito e facile da usare. Questa risposta dovrebbe essere votata almeno.
Gogol,

1
Non esiste più.
Chris Cox,

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

@jetlej interessante, non sembra funzionare per il mio file po però: /
Nemo

8

(Ecco un ESEMPIO di traduzione a DEUTSCH. MODIFICA le consuetudini con quelle VOSTRE DESIDERATE.)

in ogni testata c'è un nome univoco. (per esempio:

/*
Plugin Name: my-pluginname
.......
*/

quindi, nella cartella di quel plugin, creare una cartella "lingue";

quindi, nel tuo file .php del plugin (da qualche parte in alto), 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 qualsiasi editor di testo, quindi inserisci come questo codice (NOTA, CHE stiamo solo aggiungendo due messaggi di esempio, "ciao" e "ciao", quindi puoi AGGIUNGERE MOLTI messaggi QUANTO VUOI con le righe simili).

# English translations for PACKAGE package.
# Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Automatically generated, 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: Automatically generated\n"
"Language-Team: none\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 (it is just a line of a note, to remind where our code appears)
msgid "mymessage1"
msgstr "Hello"

#: mypluginindex.php:88
msgid "mymessage2"
msgstr "Bye"

quindi salva questo file come "my-pluginname-en_US.po" (nota che .po è un'estensione del file, quindi controlla che il tuo programma di editor di testi non sia stato salvato in "my-pluginname-en_US.po.TXT").

quindi scaricare il software POEDIT e aprire questo file. quindi modifica il campo "traduzione" e poi salva come "my-pluginname-de_DE" verranno generati due file (se poEdit non genera automaticamente il secondo file .mo, vai su File -> Preferenze -> Editor e controlla la casella che dice "Compila automaticamente il file .mo al momento del salvataggio"),

quindi metti quei due file nella cartella "lingue".

dopo questo, apri wp-config.php e trova questo codice:

define ('WPLANG, '');

e passare a

define ('WPLANG, 'de_DE');

È tutto. Quando WordPress viene caricato, leggerà il tuo file di lingua dei plugin, con prefisso -de_DE.

Quindi, nel file .php del plug-in, anziché:

echo "Something string";

dovresti usare:

echo __("mymessage1", 'my-pluginname');



Finito. Ora dovresti testare il tuo plugin.

collegamenti ps usati:


Ho provato questo con il mio tema. In header.php, ho echo __("thanks-for-visiting", 'transparent');. In tema \ lingue \ trasparente-en_US.po, ho msgid "thanks-for-visiting" msgstr "Hello! Thank you for visiting. Take a look around and subscribe to the ". Questo genera "grazie per la visita" sul front-end.
Steve

5

Ti consigliamo di utilizzare POEdit . È un'applicazione gratuita per la creazione di file .po / .mo.

Ho scritto un tutorial abbastanza approfondito sull'intero argomento qui . Puoi andare al passaggio 3 - Crea il file di traduzione per il dominio di testo.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.