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!
Vous pouvez essayer Eazy Po .
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:
__
, _e
, esc_attr_e
, etc.).../
(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)..
(cela lui permettra d'analyser votre répertoire de thèmes et ses sous-répertoires).Et tu as fini :)
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.
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.
Comme Otto a dit :
Pour les utilisateurs de Mac , je ferais quelque chose comme:
svn co http://develop.svn.wordpress.org/trunk/ wpdev
Alors ...
/languages/
dir sur votre thèmelang.command
dans ce /languages/
dirlang.command
intérieurajouter 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
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.
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).
<?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();
Utilisez comme echo __ ('This text', 'you-textdomain');
Pour tous ceux qui souhaitaient utiliser Poedit au lieu de Easy Po.
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.
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"