¿Cómo crear archivos .pot con POedit?

11 jun 2014, 04:53:08
Vistas: 80.1K
Votos: 55

He pasado horas hoy en lo que parecía algo realmente simple, que es crear un archivo .pot para un tema de WordPress que estoy desarrollando. He leído el artículo de Smashing Magazine, el artículo de Tutsplus 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 ya no hay una opción para crear archivos .pot. Lo único disponible es crear archivos .po y .mo a partir de un archivo .pot existente, que no es lo que necesito ahora.

Así que, ¿podría alguien decirme cómo puedo crear archivos .pot usando Poedit o con algún otro método? Lo agradecería mucho.

¡Gracias!

1
Comentarios

Prueba Crear archivos POT.

Domain Domain
11 ene 2016 13:34:28
Todas las respuestas a la pregunta 11
5
57

Descubrí que la forma más sencilla ahora es usar WP-CLI. Navega hasta tu tema o plugin y ejecuta el siguiente comando (después de instalar WP-CLI):

wp i18n make-pot . languages/my.pot

(Consulta la documentación del comando)

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

11 dic 2018 13:42:22
Comentarios

esta debería ser la nueva respuesta aceptada

maysi maysi
26 may 2020 14:54:13

Tuve que agregar el modificador --ignore-domain al final del comando para que todos los __ (y similares) se agregaran al archivo .pot porque el dominio de texto en mi plugin se genera dinámicamente. Esto añade tanto la información del encabezado del plugin como las cadenas necesarias para la traducción al archivo .pot

charlesdeb charlesdeb
31 dic 2020 18:06:55

LA mejor y más sencilla manera en mi opinión

wickywills wickywills
30 mar 2021 16:40:45

Esta es la forma más fácil, mejor y gratuita de generar un archivo .pot. Debería ser la respuesta principal.

Kamal Ahmed Kamal Ahmed
27 jul 2021 15:32:46

Esta es la respuesta más actualizada porque WP CLI es la solución para todo. No más complicaciones con soluciones alternativas cuando existe una forma oficial y documentada.

Maxime Culea Maxime Culea
8 nov 2022 16:44:41
4
45

A continuación te explicamos cómo crear un archivo .pot para tu tema con Poedit (edición gratuita, versión 1.6.10) en OS X.

La mejor práctica es guardar los archivos de idioma en una carpeta llamada "languages" dentro del directorio de tu tema. Si aún no la tienes, créala antes de comenzar.

En Poedit:

  1. En el menú "Archivo" selecciona "Nuevo"
  2. Selecciona el idioma que usaste en tu tema (probablemente inglés)
  3. En el menú "Catálogo" selecciona "Propiedades"
  4. Ingresa la información del proyecto en la pestaña "Propiedades de traducción"
  5. Ve a la tercera pestaña "Palabras clave de fuentes"
  6. Haz clic en el botón "Nuevo ítem" (segundo botón) e ingresa una palabra clave, repite esto para cada una de tus 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. Guarda el archivo como "nombredetutema.pot" en la carpeta "languages" de tu tema (asegúrate de agregar la extensión .pot al nombre del archivo porque por defecto se guardará como .po)
  10. En el menú "Catálogo" selecciona "Propiedades" nuevamente
  11. Ve a la segunda pestaña "Rutas de fuentes"
  12. Establece el valor para "Ruta base" como ../ (el archivo .pot se guarda en un subdirectorio, así que esto establecerá la ruta base al directorio padre, es decir, tu directorio de tema)
  13. Junto a "Ruta", haz clic en el botón "Nuevo ítem" e ingresa . (esto hará que escanee tu directorio de tema y sus subdirectorios)
  14. Haz clic en el botón "Aceptar" en la parte inferior
  15. En la ventana del proyecto haz clic en "Actualizar" (segundo icono en la parte superior)
  16. En el menú "Archivo" haz clic en "Guardar"

¡Y listo! :)

23 nov 2014 22:55:52
Comentarios

Esto no funciona para WordPress y los cambios específicos en el sistema de traducción. Como mucho, está incompleto.

Otto Otto
30 ene 2016 03:04:18

Funcionó muy bien para mi plugin

Pablo S G Pacheco Pablo S G Pacheco
17 ene 2017 17:12:47

Funciona para el plugin, pero no traduce la descripción del plugin del encabezado

Awsme Sandy Awsme Sandy
27 feb 2018 08:51:04

PoEdit (la versión gratuita) no ofrece la opción de guardar un nuevo archivo como .pot

PaulJ PaulJ
10 dic 2021 20:00:51
8
27

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

Primero, realiza un svn checkout de http://develop.svn.wordpress.org/trunk/:

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

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

cd wpdev/tools/i18n/

Después, ejecuta el archivo makepot.php sobre el directorio de tu tema:

php makepot.php wp-theme /ruta/a/tu/tema nombre-del-tema.pot

Esto creará un archivo nombre-del-tema.pot para ti. Úsalo en cualquier herramienta de traducción estándar que prefieras.

Esta opción es mejor porque utiliza el código de WordPress para encontrar las funciones de internacionalización (i18n), por lo que no se te pasará ninguna. Además, encontrará y agregará información como los metadatos del tema, por ejemplo el nombre, la descripción, etc. Esto permite que también se puedan traducir. Asegúrate de incluir el encabezado "Text Domain:" en tu style.css para que esto funcione.

23 nov 2014 23:07:09
Comentarios

¿funcionará esto también para un plugin?

Maruti Mohanty Maruti Mohanty
25 dic 2014 08:57:48

Sí, simplemente usa "wp-plugin" en lugar de "wp-theme" y generará un archivo POT para un plugin.

Otto Otto
25 dic 2014 14:39:01

Cualquier otro método que no utilice las herramientas específicas de WordPress está roto de alguna manera.

Otto Otto
30 ene 2016 03:03:22

¡Herramientas increíbles! Aunque seguía mostrando errores como "No se pudo generar el archivo" a pesar de que hice chmod +x en los directorios..

Ismail Ismail
22 dic 2016 15:14:21

¿Por qué chmod +x ayudaría? Quizás deberías intentar hacer que el directorio sea escribible en lugar de ejecutable.

Otto Otto
23 dic 2016 11:25:18

Gracias Otto, no recibí notificación de eso, pero ahora estoy en Ubuntu y esto funciona bastante perfecto!

Ismail Ismail
25 ene 2017 15:53:09

Seguí los mismos pasos, traduje todo pero no pude traducir la descripción del plugin en la sección de encabezado del plugin.

Awsme Sandy Awsme Sandy
27 feb 2018 12:18:06

Si estás traduciendo un plugin, asegúrate de usar "wp-plugin" en el comando para que sepa qué encabezados buscar.

Otto Otto
27 feb 2018 23:24:59
Mostrar los 3 comentarios restantes
5
21

Puedes probar Eazy Po.

  • Desde el menú Archivo selecciona "Nuevo desde archivos de código fuente...".
  • En la ventana del Administrador de Comandos xgettext; presiona "Examinar carpeta" para seleccionar la carpeta base del código fuente.
  • En el panel Build presiona el botón "Ejecutar Comando" para generar el archivo Pot.
11 jun 2014 05:46:48
Comentarios

Mucho mejor y más fácil que POEdit. Interfaz limpia. Tiene todas las funciones de traducción i18n en la lista de palabras clave por defecto. Gracias.

Paras Shah Paras Shah
1 oct 2018 08:21:17

Lo usé después de darme cuenta de que las funciones de WordPress en POEdit son de pago. ¡Funcionó perfectamente!

Swen Swen
30 nov 2018 18:17:07

También me funcionó perfectamente y es más fácil, mucho más fácil que poedit.

Loc_rabbirt Loc_rabbirt
17 abr 2020 10:53:43

No disponible para Linux :(

Tofandel Tofandel
17 ago 2021 14:19:09

Ya no está actualizado, considera usar WP CLI.

Maxime Culea Maxime Culea
8 nov 2022 16:45:25
2

Puedes prescindir completamente de herramientas externas con el plugin Loco Translate. Lo probé hace aproximadamente un año y desde entonces nunca más he usado POEdit. Instálalo en tu sitio de prueba y crea un archivo POT con un solo clic.

13 jul 2015 22:02:40
Comentarios

Esto no funciona para WordPress y los cambios específicos en el sistema de traducción. Como mucho, está incompleto.

Otto Otto
30 ene 2016 03:05:30

¿Qué? Es un plugin de WP.

certainlyakey certainlyakey
16 oct 2017 11:31:18
0

Para cualquiera que prefiera usar Poedit en lugar de Easy Po.

  1. Descargar (la última versión de) Poedit e Instalar
  2. Ir a Archivo>Nuevo. Aparecerá una nueva pestaña, selecciona tu idioma de traducción y Guarda (ctrl + s) en la carpeta raíz de tu tema de WordPress.

  3. En la página siguiente, haz clic en - "Extraer de fuentes". La pestaña que verás a continuación es similar a las utilizadas en los enlaces que pegaste. "Project Info" ahora es "Propiedades de traducción", al igual que "Paths" y "Keywords" son "Rutas de fuentes" y "Palabras clave de fuentes" respectivamente.

31 mar 2016 04:31:49
0

Tengo el mismo problema, la solución está en la primera pestaña cuando extraes el catálogo, debes seleccionar UTF8 recomendado, y en la tercera pestaña "Fuentes de palabras clave", haz clic en el botón "Nuevo elemento" (segundo botón) e introduce una palabra clave y repite esto para cada una de tus palabras clave (__, _e).

18 oct 2016 06:28:48
0

Como dijo Otto:

Para usuarios de Mac, yo haría algo como:

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

Entonces...

  • Crea el directorio /languages/ en tu tema
  • Crea un archivo de comandos como lang.command en ese directorio /languages/
  • Dentro de lang.command

añade código como este:

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

PS: Cambia la ruta correcta a tu makepot.php y mitema por el nombre de tu tema

Ahora cada vez que quieras crear un nuevo archivo .POT, solo debes ejecutar lang.command

Directorio de idiomas

2 mar 2017 13:15:32
0

Otra solución alternativa para crear archivos .pot para aquellos que prefieren NPM es wp-pot. Viene con una gran cantidad de opciones que puedes ajustar a tu gusto. Es súper sencillo de configurar.

9 may 2020 15:46:19
1
-1

Prueba esta publicación: Crear un archivo .pot o .po usando Poedit. Describe el flujo de trabajo e indica que los archivos .po y .pot son iguales.

Por defecto, Poedit guarda tu archivo como un archivo .po pero como los dos archivos son idénticos, puedes solucionarlo simplemente eligiendo guardar el archivo .po como un archivo .pot

11 jun 2014 08:43:48
Comentarios

Esto no funciona para WordPress y los cambios específicos en el sistema de traducción. En el mejor de los casos, está incompleto.

Otto Otto
30 ene 2016 03:05:23
1
-1

Script para crear automáticamente archivos .po, agrega todo el texto de tu código

  1. Agrega load_theme_textdomain('my-textdomain',DIR.'/languages/');
  2. Crea la carpeta wp-content/themes/MI_TEMA/languages (agrega tu archivo .mo de idioma a esta carpeta)
  3. Crea po.php y agrega este script:
<?php /*Script por Sien.com.vn */
define('WP_USE_THEMES', true);

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

function title_p($title) {

$title='Crear Po';   

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, ¡No se encontró el Textdomain <b>'.$textdomain.'</b>!</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">Éxito</span> -> Guardado en: '.__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>Idioma: <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">No se encontró textdomain [ <b>load_theme_textdomain ("tu-textdomain","ruta_a_la_carpeta_de_idiomas");</b> ]</div>';}else{
echo '<p>Textdomain: <select name="textdomain">'.$textdomain.'</select></p>';
}

echo '<p>
<input type="submit" value="Crear nuevo archivo .po"/>
</p>
</div>
</form>';

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

}

echo '</div>';

get_footer(); 
  1. Ve a tudominio/wp-content/themes/MI_TEMA/languages/po.php y crea el archivo .po
  2. Copia wp-content/themes/MI_TEMA/languages/[IDIOMA].po al escritorio y ábrelo con Poedit -> Compilar MO -> copia [IDIOMA].mo a la carpeta languages

Usa como echo __('Este texto','tu-textdomain');

24 nov 2017 12:24:34
Comentarios

No tiene sentido hacerlo, cuando ya existen herramientas CLI que hacen la magia, considera usar WP CLI para ganar.

Maxime Culea Maxime Culea
8 nov 2022 16:46:27