Comment créer des fichiers .pot avec POedit?

29

J'ai passé des heures aujourd’hui sur une tâche qui me semblait très simple: créer un fichier .pot pour un thème Wordpress que je crée. J'ai lu le article de Smashing Magazine , le article Tutsplus et quelques autres sur l'utilisation de Poedit pour créer des fichiers .pot pour un thème, puis créer des fichiers .mo et .po, mais malheureusement, je suis toujours bloqué à la première étape.

J'ai installé Poedit et je trouve que l'interface utilisateur est complètement différente de celle qui est montrée dans tous les tutoriels et il semble qu'il n'y ait plus d'option pour créer un fichier .pot. La seule chose disponible est de créer des fichiers .po et .mo à partir d'un fichier .pot existant, ce qui n'est pas ce dont j'ai besoin maintenant.

Alors quelqu'un peut-il me dire comment créer des fichiers .pot à l'aide de Poedit ou d'une autre méthode, je l'apprécierais vraiment.

Merci!

    
posée user1981248 11.06.2014 - 03:53

10 réponses

15

Vous pouvez essayer Eazy Po .

  • Dans le menu Fichier, sélectionnez "Nouveau à partir des fichiers de code source ..".
  • Dans la fenêtre xgettext Command Manager; Appuyez sur «Parcourir le dossier» pour sélectionner le dossier source.
  • Dans le volet de construction, appuyez sur le bouton "Exécuter la commande" pour générer le fichier Pot.
réponse donnée ٍShagrouni 11.06.2014 - 04:46
34

Voici comment vous pouvez créer un fichier .pot pour votre thème avec Poedit (édition gratuite, version 1.6.10) sur OS X.

Il est recommandé de sauvegarder les fichiers de langue dans un dossier nommé "languages" dans le répertoire de votre thème. Si ce n'est déjà fait, créez-le avant de commencer.

Dans Poedit:

  1. Dans le menu "Fichier", sélectionnez "Nouveau"
  2. Sélectionnez la langue que vous avez utilisée dans votre thème (probablement l'anglais)
  3. Dans le menu "Catalogue", sélectionnez "Propriétés"
  4. Entrez les informations sur le projet dans l'onglet "Propriétés de la traduction"
  5. Allez au 3ème onglet "Mots clés sources"
  6. Cliquez sur le bouton "Nouvel élément" (2ème bouton), entrez un mot clé et répétez-le pour chacun de vos mots clés ( __ , _e , esc_attr_e , etc.)
  7. Cliquez sur le bouton "OK" en bas
  8. Dans le menu "Fichier", sélectionnez "Enregistrer sous .."
  9. Enregistrez le fichier sous "yourthemename.pot" dans le dossier "languages" de votre répertoire de thèmes (assurez-vous d'ajouter l'extension .pot au nom du fichier car, par défaut, il sera enregistré au format .po)
  10. Dans le menu "Catalogue", sélectionnez à nouveau "Propriétés"
  11. Allez au deuxième onglet "Sources des chemins"
  12. Définissez la valeur du "chemin de base" sur ../ (le fichier .pot est enregistré dans un sous-répertoire. Ainsi, vous définissez la base sur le répertoire parent, c'est-à-dire votre répertoire de thème)
  13. À côté de "Path", cliquez sur le bouton "Nouvel élément" et entrez . (cela lui permettra d'analyser votre répertoire de thèmes et ses sous-répertoires)
  14. Cliquez sur le bouton "OK" en bas
  15. Dans la fenêtre du projet, cliquez sur "Mettre à jour" (2ème icône en haut)
  16. Dans le menu "Fichier", cliquez sur "Enregistrer"

Et vous avez terminé :)

    
réponse donnée Jasper 23.11.2014 - 21:55
24

Vous pouvez le faire avec les outils WordPress, sans POEdit.

Commencez par effectuer une extraction svn de enlace :

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

Ensuite, accédez au répertoire des outils i18n qui s'y trouve:

cd wpdev/tools/i18n/

Ensuite, passez simplement makepot.php sur le répertoire de votre thème:

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

Ceci créera un fichier nom_meime.pot pour vous. Utilisez-le dans n’importe quel outil de traduction standard que vous aimez.

C’est mieux car il utilise le code WordPress pour rechercher les fonctions i18n, vous ne manquerez donc aucune d’elles. En outre, il trouvera et ajoutera des éléments tels que les informations d'en-tête de thème, telles que le nom, la description, etc. Cela permet également de les traduire. Assurez-vous d'inclure l'en-tête "Domaine de texte:" dans votre style.css pour que ceux-ci fonctionnent.

    
réponse donnée Otto 23.11.2014 - 22:07
0

Vous pouvez supprimer des outils externes avec le plug-in Loco Translate . Je l'ai essayé il y a environ un an et je n'ai jamais utilisé POEdit depuis. Installez-le sur votre site de test et créez un fichier POT en un clic.

    
réponse donnée Ihor Vorotnov 13.07.2015 - 21:02
0

Pour tous ceux qui souhaitaient utiliser Poedit au lieu de Easy Po.

  1. Télécharger (dernière version de) Poedit and Install
  2. Aller au fichier > Nouveau. Un nouvel onglet va apparaître, choisissez votre langue de traduction et enregistrez (ctrl + s) dans le dossier racine de votre thème wordpress.

  3. Sur la page que vous verrez ensuite, cliquez sur - "Extraire des sources". L'onglet que vous verrez ensuite est similaire à ceux utilisés dans les liens que vous avez collés. "Informations sur le projet" est désormais "Propriétés de la traduction", ainsi que "Chemins" et "Mots-clés" sont respectivement "Chemins des sources" et "Mots-clés des sources"

réponse donnée Toheeb 31.03.2016 - 03:31
0

J'ai le même problème, la solution est dans le premier onglet lorsque vous extrayez le catalogue, devrait mettre UTF8 recommandé, et dans le 3ème onglet "Sources des mots clés", cliquez sur le bouton "Nouvel élément" (2ème bouton) et entrez un mot-clé et répétez ceci pour chacun de vos mots-clés (__, _e).

    
réponse donnée user105155 18.10.2016 - 05:28
0

Comme Otto a déclaré :

Pour les utilisateurs de Mac , je voudrais faire quelque chose comme:

  • Après avoir été installé par svn co http://develop.svn.wordpress.org/trunk/ wpdev

Alors ...

  • Créez /languages/ dir sur votre thème
  • Créez un fichier de commande comme lang.command dans ce /languages/ dir
  • Inside lang.command

ajouter du code quelque chose comme ça ..

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

PS: modifiez votre chemin makepot.php et votre mythème dans le nom de votre thème

.

Chaque fois que vous souhaitez créer un nouveau fichier .POT , vous pouvez simplement exécuter lang.command

.

    
réponse donnée l2aelba 02.03.2017 - 12:15
0

Script de création automatique du fichier .po, ajout automatique du texte de votre code

  1. Ajouter load_theme_textdomain ('my-textdomain', DIR . '/ languages /');
  2. Créez un dossier wp-content / themes / MY_THEME / languages (ajoutez votre fichier .mo de langue à ce dossier)
  3. Créez po.php et ajoutez ce 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. Accédez à votre domaine / wp-content / themes / MY_THEME / languages / po.php et créez le fichier .po
  2. .
  3. Copiez wp-content / themes / MY_THEME / languages / [LANG] .po sur le bureau et ouvrez-le à l'aide de Poedit - > Compiler MO - > copier le fichier [LANG] .mo dans le dossier langues

Utiliser comme echo __ ('Ce texte', 'you-textdomain');

    
réponse donnée Siên 24.11.2017 - 11:24
0

J'ai trouvé que le moyen le plus simple consiste à utiliser la WP-CLI . Accédez à votre thème ou plug-in et exécutez la commande suivante (après l'installation de WP-CLI):

wp i18n make-pot . languages/my.pot

(Voir documentation de la commande)

Vous pouvez ensuite modifier ce fichier avec Poedit ou tout autre outil de traduction pratique.

    
réponse donnée lhermann 11.12.2018 - 12:42
-1

Essayez ce poste: Créer un fichier .pot ou .po à l'aide de Poedit . Il décrit le flux de travail et indique que les fichiers .po et .pot sont identiques.

  

Par défaut, Poedit enregistre votre fichier sous forme de fichier .po, mais comme les deux fichiers sont identiques, vous pouvez contourner ce problème en choisissant simplement d'enregistrer le fichier .po sous forme de fichier .pot

    
réponse donnée Andrew 11.06.2014 - 07:43

Lire d'autres questions sur les étiquettes