Traduzir um plug-in usando arquivos .po .mo


34

Eu quero traduzir este plugin.

O plugin já foi traduzido para outros idiomas e possui .potarquivos para adicionar novos idiomas (até onde eu entendi pela descrição).

Como crio .poe .moarquivos para o meu novo idioma e os faço acessíveis para serem usados ​​pelo plugin? Tentei definir o idioma russo no meu wp-config.phparquivo inserindo a definição abaixo:

define ('WPLANG', 'ru_RU');

Respostas:


43

O editor

Existem outros, mas isso é mais usado: Poedit , um editor de catálogos gettext de plataforma cruzada (arquivos .po).

Os Formatos

  • .mosignifica Machine Object
    - exportação compilada do .poarquivo usado pelo WordPress
  • .posignifica Portable Object
    - arquivo de texto editável com as seqüências de conversão
    - com base no .potarquivo mestre , usando a função Atualizar do arquivo POT PoEdit
    - algumas pessoas o distribuem como um arquivo mestre, mas devem ser usadas apenas para traduções
  • .potsignifica Portable Object Template
    - arquivo de texto editável usado para pegar todas as seqüências traduzíveis do próprio WordPress e Temas e Plugins, usando a função Update from Sources PoEdit

O procedimento

  • Duplique o arquivo .pot e renomeie-o para plugin-basename-lang_COUNTRY.po
  • Exemplo para o caso de plug-in referenciado: - pt_BR significa o Brasil português, mas muitos idiomas não têm variação de país ... - você precisará preencher com seu próprio idiomasubscribe-reloaded-pt_BR.po

  • WPLANGO wp-config.phparquivo deve estar definido no seu idioma, por exemplo,pt_BR
  • Toda vez que você salva o .poarquivo, o PoEdit gera automaticamente um .moarquivo, que é o WordPress usado e basicamente o único que você precisa enviar

Observações

  • Se você fizer uma tradução parcial completa ou decente, envie-a ao autor do plugin, para que ele possa incluí-la no Repositório e você será creditado por ela.
  • Não se esqueça de fazer um backup da sua tradução, porque se você atualizar o plugin, seu arquivo será perdido
  • @ A sugestão de plug-in user17078 é bastante agradável, mas nunca a usei muito

11
Quanto tempo o novo arquivo mo / po deve levar para ter efeito?
Nemo

8

Você pode tentar este plug-in codestyling-localização: . Você pode traduzir seus plugins e temas usando isso.


11
Este é o melhor plugin de tradução que eu já vi. Este plugin pode possuir poedit a qualquer dia e a melhor parte é que é gratuito e fácil de usar. Esta resposta deve ser votada no mínimo.
Gogol

11
Não existe mais.
Chris Cox

11
Isto parece uma boa alternativa: wordpress.org/plugins/say-what
jetlej

@jetlej interessante, mas parece que não funciona para o meu arquivo po: /
Nemo

8

(Aqui está um exemplo de tradução para DEUTSCH. MUDE os costumes para SEUS DESEJADOS.)

em todos os plugins, existe um nome único. (por exemplo:

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

em seguida, na pasta desse plug-in, crie uma pasta "languages";

em seguida, no seu arquivo .php do plugin (em algum lugar no topo), insira o código de inicialização:

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;

abra qualquer editor de texto e insira como este código (OBSERVAÇÃO: estamos adicionando apenas duas mensagens de amostra, "olá" e "tchau"; portanto, você pode adicionar quantas mensagens desejar com as linhas semelhantes).

# 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"

salve esse arquivo como "my-pluginname-en_US.po" (observe que .po é uma extensão do arquivo, verifique se o seu programa editor de texto não foi salvo em "my-pluginname-en_US.po.TXT").

faça o download do software POEDIT e abra esse arquivo. edite o campo "translation" e salve como "my-pluginname-de_DE"; serão gerados dois arquivos (se o poEdit não gerar o segundo arquivo .mo automaticamente, basta ir em File -> Preferences -> Editor e verificar a caixa "Compilar automaticamente o arquivo .mo ao salvar"),

depois coloque esses dois arquivos na pasta "languages".

depois disso, abra o wp-config.php e encontre este código:

define ('WPLANG, '');

e mude para

define ('WPLANG, 'de_DE');

Isso é tudo. Quando o WordPress é carregado, ele lê o arquivo de idioma dos plugins, com o prefixo -de_DE.

Portanto, no arquivo .php do plug-in, em vez de:

echo "Something string";

você deveria usar:

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



Acabado. Agora você deve testar seu plugin.

ps links usados:


Eu tentei isso com o meu tema. No header.php, eu tenho echo __("thanks-for-visiting", 'transparent');. No tema \ languages ​​\ transparent-pt_BR.po, eu tenho msgid "thanks-for-visiting" msgstr "Hello! Thank you for visiting. Take a look around and subscribe to the ". Isso gera "obrigado pela visita" no front-end.
Steve

5

Você vai querer usar o POEdit . É um aplicativo gratuito para criar arquivos .po / .mo.

Eu escrevi um tutorial bastante detalhado sobre o tópico inteiro aqui . Você pode pular para a Etapa 3 - Criar o arquivo de tradução para o domínio de texto.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.