web-dev-qa-db-fra.com

Comment créer des fichiers .pot avec POedit?

Aujourd'hui, j'ai passé des heures sur ce qui semblait être une chose très simple, à savoir créer un fichier .pot pour un thème Wordpress que je crée. J'ai lu l'article Smashing Magazine , l'article Tutsplus et quelques autres expliquant comment utiliser Poedit pour créer des fichiers .pot pour un thème, puis créer Les 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!

31
user1981248

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 Construction, appuyez sur le bouton "Exécuter la commande" pour générer le fichier Pot.
16
ٍShagrouni

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

La meilleure pratique consiste à enregistrer les fichiers de langue dans un dossier nommé "langues" dans votre répertoire de thèmes. Si ce n'est déjà fait, créez-le avant de commencer.

À 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 du projet dans l'onglet "Propriétés de la traduction"
  5. Aller au 3ème onglet "Sources des mots clés"
  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. Aller au 2ème onglet "Sources des chemins"
  12. Définissez la valeur de "Chemin de base" sur ../ (le fichier .pot étant enregistré dans un sous-répertoire, vous définissez ainsi la base sur le répertoire parent, c.-à-d. Votre répertoire de thème).
  13. À côté de "Chemin", 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 tu as fini :)

37
Jasper

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

Tout d’abord, faites un check-out de http://develop.svn.wordpress.org/trunk/ :

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

Ensuite, accédez au répertoire des outils i18n:

cd wpdev/tools/i18n/

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

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

Cela 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 parce qu’il utilise le code WordPress pour trouver les fonctions de l’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.

25
Otto

J'ai trouvé que le moyen le plus simple consiste maintenant à utiliser le 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 éditer ce fichier avec Poedit ou tout autre outil de traduction très pratique.

3
lhermann

Comme Otto a dit :

Pour les utilisateurs de Mac , je ferais quelque chose comme:

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

Alors ...

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

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: Changez votre correct makepot.php chemin et mythème en votre nom de thème

Maintenant, chaque fois que vous voulez créer un nouveau fichier .POT , vous pouvez simplement exécuter lang.command

 dir 

0
l2aelba

Vous pouvez supprimer des outils externes avec Loco Translate plugin. 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.

0
Ihor Vorotnov

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é puis répétez ceci pour chacun de vos mots-clés (__, _e).

0
user105155

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

  1. Ajoutez load_theme_textdomain ('my-textdomain',DIR. '/ Languages ​​/');
  2. Créez un dossier wp-content/themes/MY_THEME/languages ​​(ajoutez le fichier .mo de votre 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. Allez dans youdomain/wp-content/themes/MY_THEME/languages ​​/ po.php et créez un fichier .po.
  2. Copier wp-content/themes/MY_THEME/languages ​​/ [LANG] .po sur le bureau et ouvrir avec Poedit -> Compiler MO -> copier [LANG] .mo dans languages ​​dossier

Utilisez comme echo __ ('This text', 'you-textdomain');

0
Siên

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

  1. Téléchargement (dernière version de) Poedit and Install
  2. Aller dans 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"

0
Toheeb