Como criar arquivos .pot com o POedit?

29

Eu passei horas hoje no que parecia ser algo realmente simples, que é criar um arquivo .pot para um tema do Wordpress que estou criando. Li o artigo da Smashing Magazine , o Tutsplus article e alguns outros sobre como usar Poedit para criar arquivos .pot para um tema e, em seguida, criar arquivos .mo e .po, mas, infelizmente, ainda estou preso no primeiro passo.

Eu instalei o Poedit e acho que a interface do usuário é completamente diferente do que é mostrado em todos os tutoriais e parece que não há mais uma opção para criar o arquivo .pot. A única coisa disponível é criar arquivos .po e .mo a partir de um arquivo .pot existente, que não é o que eu preciso agora.

Então, alguém pode me dizer como posso criar arquivos .pot usando o Poedit ou com algum outro método, eu realmente aprecio isso.

Obrigado!

    
por user1981248 11.06.2014 / 03:53
fonte

10 respostas

15

Você pode tentar Eazy Po .

  • No menu arquivo, selecione "Novo a partir dos arquivos de código-fonte".
  • Na janela do Gerenciador de Comando xgettext; Pressione "Procurar pasta" para selecionar a pasta de origem base.
  • No painel Compilar, pressione o botão "Executar comando" para gerar o arquivo Pot.
por ٍShagrouni 11.06.2014 / 04:46
fonte
34

Veja como você pode criar um arquivo .pot para o seu tema com o Poedit (edição gratuita, versão 1.6.10) no OS X.

A melhor prática é salvar arquivos de idioma em uma pasta chamada "idiomas" no diretório do tema. Se você ainda não o fez, crie-o antes de começar.

Em Poedit:

  1. No menu "Arquivo", selecione "Novo"
  2. Selecione o idioma que você usou no seu tema (provavelmente em inglês)
  3. No menu "Catálogo", selecione "Propriedades"
  4. Insira as informações do projeto na guia "Propriedades da tradução"
  5. Vá para a terceira guia "Palavras-chave de fontes"
  6. Clique no botão "Novo item" (2º botão) e digite uma palavra-chave e repita isso para cada uma de suas palavras-chave ( __ , _e , esc_attr_e , etc.)
  7. Clique no botão "OK" na parte inferior
  8. No menu "Arquivo", selecione "Salvar como ..."
  9. Salve o arquivo como "yourthemename.pot" na pasta "languages" do diretório do tema (certifique-se de adicionar a extensão .pot ao nome do arquivo porque, por padrão, ele será salvo como .po)
  10. No menu "Catálogo", selecione "Propriedades" novamente
  11. Vá para a segunda guia "Caminhos das origens"
  12. Defina o valor para "Caminho base" para ../ (o arquivo .pot é salvo em um subdiretório, assim você define a base para o diretório pai, ou seja, seu diretório de temas)
  13. Ao lado de "Caminho", clique no botão "Novo item" e insira . (isso fará com que ele verifique seu diretório de temas e seus subdiretórios)
  14. Clique no botão "OK" na parte inferior
  15. Na janela do projeto, clique em "Atualizar" (2º ícone no topo)
  16. No menu "Arquivo", clique em "Salvar"

E pronto:)

    
por Jasper 23.11.2014 / 21:55
fonte
24

Você pode fazer isso com as ferramentas do WordPress, sem POEdit.

Primeiro, faça um check-out do svn enlace :

svn co http://develop.svn.wordpress.org/trunk/ wpdev

Em seguida, mude para o diretório de ferramentas do i18n:

cd wpdev/tools/i18n/

Em seguida, basta executar o makepot.php no diretório do seu tema:

php makepot.php wp-theme /path/to/your/theme themename.pot

Isso criará um arquivo themename.pot para você. Use-o em qualquer ferramenta de tradução padrão que você goste.

Isso é melhor porque usa o código do WordPress para encontrar as funções do i18n, assim você não perderá nenhuma delas. Além disso, ele encontrará e adicionará coisas como as informações do cabeçalho do tema, como nome, descrição, etc. Isso também permite que elas sejam traduzidas. Certifique-se de incluir o cabeçalho "Domínio de texto:" em seu style.css para que eles funcionem.

    
por Otto 23.11.2014 / 22:07
fonte
0

Você pode descartar ferramentas externas com o plugin Loco Translate . Eu tentei cerca de um ano atrás e nunca usei POEdit desde então. Instale-o no seu site de teste e crie um arquivo POT com um clique.

    
por Ihor Vorotnov 13.07.2015 / 21:02
fonte
0

Para quem quisesse usar Poedit em vez de Easy Po.

  1. Faça o download (última versão de) Poedit and Install
  2. Ir para o arquivo > Novo. Uma nova guia será aberta, escolha o idioma de tradução e salve (ctrl + s) na pasta raiz do tema do wordpress.

  3. Na página que você verá a seguir, clique em - "Extrair das fontes". A guia que você verá a seguir é semelhante àquelas usadas nos links que você colou. "Project Info" é agora "Translation Properties", assim como "Paths" e "Keywords" são "Sources Paths" e "Sources keywords" respectivamente

por Toheeb 31.03.2016 / 03:31
fonte
0

Eu tenho o mesmo problema, a solução está na primeira guia quando você extrair o catálogo, deve colocar UTF8 recommanded, e na 3ª aba "palavras-chave fontes", clique no botão "Novo item" (2º botão) e digite um palavra-chave e repita isso para cada uma de suas palavras-chave (__, _e).

    
por user105155 18.10.2016 / 05:28
fonte
0

Como Otto disse :

Para usuários de Mac , eu faria algo como:

  • Depois de instalado por svn co http://develop.svn.wordpress.org/trunk/ wpdev

Então ...

  • Crie /languages/ dir no seu tema
  • Crie um arquivo de comando como lang.command nesse /languages/ dir
  • Por dentro de lang.command

adicione um código como este ..

#!/bin/bash
cd $(dirname "$0")
php /Users/YOUNAME/wpdev/tools/i18n/makepot.php wp-theme ../../mytheme mytheme.pot

PS: Altere o caminho makepot.php correto e mytheme para o nome do seu tema

Agora, toda vez que você quiser criar um novo arquivo .POT , poderá executar lang.command

    
por l2aelba 02.03.2017 / 12:15
fonte
0

O script cria automaticamente o arquivo .po, adiciona automaticamente todo o texto do seu código

  1. Adicione load_theme_textdomain ('meu-texto-domínio', DIR . '/ languages /');
  2. Crie a pasta wp-content / themes / MY_THEME / languages (adicione seu arquivo .mo de idioma a esta pasta)
  3. Crie po.php e adicione este script:
<?php /*Script by Sien.com.vn */
define('WP_USE_THEMES', true);

require(''.$_SERVER['DOCUMENT_ROOT'].'/wp-load.php' );

function title_p($title) {

$title='Po create';   

return $title;}
add_filter( 'pre_get_document_title', 'title_p' );


$robots_p='noindex,nofollow';   

get_header();  

echo '<div id="content" class="col col-100">';

if(current_user_can('manage_options')){

function write_txt($path,$content,$type){
$file=fopen($path,$type) or die();
fwrite($file,$content);
fclose($file);
return TRUE;
}

if(isset($_POST['lang'])){
$lang_code=pathinfo($_POST['lang'],PATHINFO_FILENAME);

load_textdomain('this_lang',__DIR__.'/'.$lang_code.'.mo');


$textdomain=$_POST['textdomain'];


$txt='';

function sfile($dir, $ext) {
    global $textdomain;

$globFiles = glob("$dir".DIRECTORY_SEPARATOR."*.$ext");
$globDirs = glob("$dir/*", GLOB_ONLYDIR);

foreach ($globDirs as $dir) {
sfile($dir, $ext);

}

foreach ($globFiles as $file=>$path) {

$txt.=file_get_contents($path,FILE_USE_INCLUDE_PATH);

}


preg_match_all('/__\(\'(.+?)\',\''.$textdomain.'\'\)/',$txt,$output);


$arr=array();

foreach(array_unique($output[1]) as $v){

    if(isset($v)){
write_txt(''.__DIR__.'/po.dat',''.$v.'**$!3|\/**','a+');
    }
}

}
sfile(get_template_directory(),'php');


$get=file_get_contents(''.__DIR__.'/po.dat');

$k=explode('**$!3|\/**',$get);


foreach(array_unique($k) as $v){

    if(!empty($v)){ 

if($v==__($v,'this_lang')){
write_txt(''.__DIR__.'/po.dat.empty','
msgid "'.$v.'"
msgstr ""
','a+');
}else{
write_txt(''.__DIR__.'/po.dat.isset','
msgid "'.$v.'"
msgstr "'.__($v,'this_lang').'"
','a+');
}

    }

    }

if(empty(file_get_contents(''.__DIR__.'/po.dat.isset')) && empty(file_get_contents(''.__DIR__.'/po.dat.empty'))){
        echo '<div class="error">Error, Textdomain <b>'.$textdomain.'</b> not found!</div>';
    }else{

write_txt(''.__DIR__.'/'.$lang_code.'.po','# '.$lang_code.' LANG
msgid ""
msgstr ""
"PO-Revision-Date: 2017-11-23 22:26+0700\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 2.0.4\n"
"Language: vi_VN\n"
"Project-Id-Version: Sien\n"
"POT-Creation-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"


'.file_get_contents(''.__DIR__.'/po.dat.isset').'
'.file_get_contents(''.__DIR__.'/po.dat.empty').'
','w+');


echo '<div class="success"><span style="color:blue">Success</span> -> Saved to: '.__DIR__.'/ <b>'.$lang_code.'.po</b></div>';

unlink(''.__DIR__.'/po.dat');
unlink(''.__DIR__.'/po.dat.isset');
unlink(''.__DIR__.'/po.dat.empty');

}

}


echo '<form action="" method="POST">
<div class="menu bd text-center"><p>Language: <select name="lang">';

foreach(glob("".__DIR__."/*.mo") as $path) {echo '<option value="'.$path.'">'.pathinfo($path,PATHINFO_FILENAME).'</option>';}

echo '</select></p>';

$txt='';
function stext($dir, $ext) {
$globFiles = glob("$dir".DIRECTORY_SEPARATOR."*.$ext");
$globDirs = glob("$dir/*", GLOB_ONLYDIR);
foreach ($globDirs as $dir) {stext($dir, $ext);}

foreach ($globFiles as $file=>$path) {
    if($path!=__FILE__){
$txt.=(str_replace(' ','',file_get_contents($path,FILE_USE_INCLUDE_PATH)));
    }

}

preg_match_all('/load_theme_textdomain\((\'|\")(.+?)(\'|\")/',$txt,$gtextdomain);
$td='';
foreach($gtextdomain[2] as $text){

    if(!empty($text)){
    $td.='<option value="'.$text.'">'.$text.'</option>';
    }


}

write_txt(__DIR__.'/textdomain.dat',$td,'a+');
}
stext(get_template_directory(),'php');

$textdomain=file_get_contents(__DIR__.'/textdomain.dat');
if(empty($textdomain)){echo '<div class="error">Not found textdomain [ <b>load_theme_textdomain ("you-textdomain","path_to_language_folder");</b> ]</div>';}else{
echo '<p>Textdomain: <select name="textdomain">'.$textdomain.'</select></p>';
}

echo '<p>
<input type="submit" value="Create new.po file"/>
</p>
</div>
</form>';

unlink(__DIR__.'/textdomain.dat');

}

echo '</div>';

get_footer(); 
  1. Acesse youdomain / wp-content / themes / MY_THEME / languages / po.php e crie o arquivo .po
  2. Copie wp-content / themes / MY_THEME / languages / [LANG] .po para a área de trabalho e abra com Poedit - > Compile MO - > copiar [LANG] .mo para a pasta languages

Use como echo __ ('Este texto', 'você-texto-domínio');

    
por Siên 24.11.2017 / 11:24
fonte
0

Achei que a maneira mais fácil agora é usar o WP-CLI . Navegue até o seu tema ou plugin e execute o seguinte comando (após a instalação do WP-CLI):

wp i18n make-pot . languages/my.pot

(Veja documentação do comando)

Você pode editar esse arquivo com o Poedit ou qualquer outra ferramenta de tradução prática.

    
por lhermann 11.12.2018 / 12:42
fonte
-1

Tente este post: Crie um arquivo .pot ou .po usando o Poedit . Ele descreve o fluxo de trabalho e indica que os arquivos .po e .pot são os mesmos.

  

Por padrão, o Poedit salva seu arquivo como um arquivo .po, mas como os dois arquivos são idênticos, você pode contornar isso simplesmente escolhendo salvar o arquivo .po como um arquivo .pot

    
por Andrew 11.06.2014 / 07:43
fonte