¿Cómo crear archivos .pot con POedit?

29

Pasé horas hoy en lo que parecía algo realmente simple, que es crear un archivo .pot para un tema de Wordpress que estoy creando. He leído el Smashing Magazine artículo , el Tutsplus article y algunos otros sobre cómo usar Poedit para crear archivos .pot para un tema, y luego crear archivos .mo y .po, pero lamentablemente, todavía estoy atascado en el primer paso.

Instalé Poedit y encuentro que la interfaz de usuario es completamente diferente a la que se muestra en todos los tutoriales y parece que no hay más una opción para crear el archivo .pot. Lo único que está disponible es crear archivos .po y .mo a partir de un archivo .pot existente, que no es lo que necesito ahora.

Entonces, ¿alguien puede decirme cómo puedo crear archivos .pot utilizando Poedit o con algún otro método, realmente lo apreciaría?

¡Gracias!

    
pregunta user1981248 11.06.2014 - 03:53

10 respuestas

15

Puedes probar Eazy Po .

  • En el menú de archivo, seleccione "Nuevo desde archivos de código fuente ...".
  • En la ventana del Administrador de comandos de xgettext; Presione "Buscar carpeta" para seleccionar la carpeta de origen base.
  • En el panel Crear, presione el botón "Ejecutar comando" para generar un archivo Pot.
respondido por el ٍShagrouni 11.06.2014 - 04:46
34

Aquí es cómo puede crear un archivo .pot para su tema con Poedit (edición gratuita, versión 1.6.10) en OS X.

La mejor práctica es guardar archivos de idioma en una carpeta llamada "idiomas" en su directorio de temas. Si aún no lo ha hecho, créelo antes de comenzar.

En Poedit:

  1. En el menú "Archivo", seleccione "Nuevo"
  2. Seleccione el idioma que usó en su tema (probablemente en inglés)
  3. En el menú "Catálogo", seleccione "Propiedades"
  4. Ingrese la información del proyecto en la pestaña "Propiedades de traducción"
  5. Vaya a la tercera pestaña "Palabras clave de fuentes"
  6. Haga clic en el botón "Nuevo elemento" (segundo botón), ingrese una palabra clave y repita esto para cada una de sus palabras clave ( __ , _e , esc_attr_e , etc.)
  7. Haz clic en el botón "Aceptar" en la parte inferior
  8. En el menú "Archivo", selecciona "Guardar como ..."
  9. Guarde el archivo como "yourthemename.pot" en la carpeta "languages" en su directorio de temas (asegúrese de agregar la extensión .pot al nombre de archivo porque, de forma predeterminada, se guardará como .po)
  10. En el menú "Catálogo", seleccione "Propiedades" nuevamente
  11. Vaya a la segunda pestaña "Rutas de origen"
  12. Establezca el valor de "Ruta base" en ../ (el archivo .pot se guarda en un subdirectorio, de esta manera usted establece la base en el directorio principal, es decir, el directorio de su tema)
  13. Junto a "Ruta", haga clic en el botón "Nuevo elemento" e ingrese . (esto hará que escanee su directorio de temas y sus subdirectorios)
  14. Haz clic en el botón "Aceptar" en la parte inferior
  15. En la ventana del proyecto, haga clic en "Actualizar" (segundo icono en la parte superior)
  16. En el menú "Archivo", haga clic en "Guardar"

Y listo :)

    
respondido por el Jasper 23.11.2014 - 21:55
24

Puedes hacer esto con las herramientas de WordPress, sin POEdit.

Primero, realice una comprobación svn de enlace :

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

Luego, cambie al directorio de herramientas i18n en él:

cd wpdev/tools/i18n/

Luego simplemente ejecuta el archivo makepot.php sobre el directorio de tu tema:

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

Esto creará un archivo themename.pot para ti. Úsalo en cualquier herramienta de traducción estándar que te guste.

Esto es mejor porque usa el código de WordPress para encontrar las funciones de i18n, para que no te pierdas ninguna de ellas. Además, encontrará y agregará cosas como la información del encabezado del tema, como el nombre, la descripción, etc. Esto permite que también se traduzcan. Asegúrate de incluir el encabezado "Dominio de texto:" en tu estilo.css para que funcionen.

    
respondido por el Otto 23.11.2014 - 22:07
0

Puede eliminar todas las herramientas externas con el complemento Loco Translate . Lo probé hace un año y nunca he usado POEdit desde entonces. Instálelo en su sitio de prueba y cree un archivo POT con un solo clic.

    
respondido por el Ihor Vorotnov 13.07.2015 - 21:02
0

Para cualquiera que haya querido usar Poedit en lugar de Easy Po.

  1. Descargue (la última versión de) Poedit and Install
  2. Ir al archivo > Nuevo. Aparecerá una nueva pestaña, elija su idioma de traducción y Guardar (ctrl + s) en la carpeta raíz de su tema de wordpress.

  3. En la página que verá a continuación, haga clic en - "Extraer de las fuentes". La pestaña que verá a continuación es similar a la que se usa en los enlaces que ha pegado. "Información del proyecto" ahora es "Propiedades de traducción", así como "Rutas" y "Palabras clave" son "Rutas de fuentes" y "Palabras clave de fuentes" respectivamente

respondido por el Toheeb 31.03.2016 - 03:31
0

Tengo el mismo problema, la solución está en la primera pestaña cuando extrae el catálogo, debería poner UTF8 recomendado, y en la 3a pestaña "Palabras clave de fuentes", haga clic en el botón "Nuevo elemento" (segundo botón) e ingrese palabra clave y repita esto para cada una de sus palabras clave (__, _e).

    
respondido por el user105155 18.10.2016 - 05:28
0

Como Otto dijo :

Para usuarios de Mac , haría algo como:

  • Después de instalado por svn co http://develop.svn.wordpress.org/trunk/ wpdev

Entonces ...

  • Haz /languages/ dir en tu tema
  • Cree un archivo de comando como lang.command en ese /languages/ dir
  • Dentro de lang.command

agregar código algo como esto ...

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

PS: Cambia tu ruta makepot.php correcta y mytheme al nombre de tu tema

Ahora, cada vez que quieras crear un nuevo archivo .POT , puedes ejecutar lang.esmand

    
respondido por el l2aelba 02.03.2017 - 12:15
0

Script crea automáticamente el archivo .po, agrega automáticamente todo el texto de su código

  1. Añadir load_theme_textdomain ('my-textdomain', DIR . '/ languages /');
  2. Crear carpeta wp-content / themes / MY_THEME / languages (agregue su archivo .mo de idioma a esta carpeta)
  3. Crea po.php y agrega 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. Vaya a youdomain / wp-content / themes / MY_THEME / languages / po.php y cree el archivo .po
  2. Copie wp-content / themes / MY_THEME / languages / [LANG] .po en el escritorio y abra con Poedit - > Compilar MO - > copie [LANG] .mo a idiomas

Usar como echo __ ('Este texto', 'you-textdomain');

    
respondido por el Siên 24.11.2017 - 11:24
0

Descubrí que la forma más fácil ahora es usar WP-CLI . Vaya a su tema o complemento y ejecute el siguiente comando (después de instalar WP-CLI):

wp i18n make-pot . languages/my.pot

(Vea documentación del comando)

Luego puede editar este archivo con Poedit o con cualquier otra herramienta de traducción práctica.

    
respondido por el lhermann 11.12.2018 - 12:42
-1

Pruebe esta publicación: Cree un archivo .pot o .po utilizando Poedit . Describe el flujo de trabajo e indica que los archivos .po y .pot son los mismos.

  

Por defecto, Poedit guarda su archivo como un archivo .po, pero como los dos archivos son idénticos, puede evitarlo simplemente eligiendo guardar el archivo .po como un archivo .pot

    
respondido por el Andrew 11.06.2014 - 07:43

Lea otras preguntas en las etiquetas