Cum să creezi fișiere .pot cu POedit?

11 iun. 2014, 04:53:08
Vizualizări: 80.1K
Voturi: 55

Am petrecut ore întregi astăzi cu ceea ce părea a fi ceva foarte simplu, și anume crearea unui fișier .pot pentru o temă WordPress pe care o dezvolt. Am citit articolul de pe Smashing Magazine, articolul de pe Tutsplus și câteva alte articole despre cum să folosești Poedit pentru a crea fișiere .pot pentru o temă, și apoi pentru a crea fișiere .mo și .po, dar din păcate, sunt încă blocat la primul pas.

Am instalat Poedit și am observat că interfața este complet diferită față de cea prezentată în toate tutorialele și se pare că nu mai există opțiunea de a crea fișiere .pot. Singura opțiune disponibilă este de a crea fișiere .po și .mo dintr-un fișier .pot existent, ceea ce nu este ceea ce am nevoie acum.

Așadar, poate cineva să-mi spună cum pot crea fișiere .pot folosind Poedit sau prin altă metodă, aș aprecia foarte mult.

Mulțumesc!

1
Comentarii

Încearcă Crearea fișierelor POT.

Domain Domain
11 ian. 2016 13:34:28
Toate răspunsurile la întrebare 11
5
57

Am găsit că cea mai ușoară metodă acum este să folosești WP-CLI. Navighează la tema sau plugin-ul tău și execută următoarea comandă (după ce ai instalat WP-CLI):

wp i18n make-pot . languages/my.pot

(Vezi documentația comenzii)

Apoi poți edita acest fișier cu Poedit sau orice alt instrument de traducere la îndemână.

11 dec. 2018 13:42:22
Comentarii

acesta ar trebui să fie noul răspuns acceptat

maysi maysi
26 mai 2020 14:54:13

a trebuit să adaug comutatorul --ignore-domain la sfârșitul comenzii pentru a obține toate __ (și similare) adăugate în fișierul .pot deoarece domeniul textului în plugin-ul meu este generat dinamic. Acest lucru adaugă atât informațiile din antetul plugin-ului, cât și șirurile necesare pentru traducere în fișierul .pot

charlesdeb charlesdeb
31 dec. 2020 18:06:55

Cea MAI BUNĂ și mai simplă metodă, după părerea mea

wickywills wickywills
30 mar. 2021 16:40:45

Acesta este cel mai ușor și cel mai bun mod gratuit de a genera un fișier pot. Ar trebui să fie răspunsul principal.

Kamal Ahmed Kamal Ahmed
27 iul. 2021 15:32:46

Acesta este cel mai actualizat răspuns deoarece WP CLI este soluția pentru orice. Nu mai este nevoie să te complici cu alte soluții ocolitoare când există o metodă oficială și documentată.

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

Iată cum poți crea un fișier .pot pentru tema ta folosind Poedit (ediția gratuită, versiunea 1.6.10) pe OS X.

Cea mai bună practică este să salvezi fișierele de limbă într-un director numit "languages" în directorul temei tale. Dacă nu ai făcut-o deja, creează-l înainte de a începe.

În Poedit:

  1. În meniul "File" selectează "New"
  2. Selectează limba pe care ai folosit-o în tema ta (probabil engleză)
  3. În meniul "Catalog" selectează "Properties"
  4. Introdu informațiile despre proiect în fila "Translation properties"
  5. Mergi la fila a 3-a "Sources keywords"
  6. Apasă pe butonul "New item" (al doilea buton) și introdu un cuvânt cheie, repetă acest lucru pentru fiecare dintre cuvintele tale cheie (__, _e, esc_attr_e, etc.)
  7. Apasă pe butonul "OK" din partea de jos
  8. În meniul "File" selectează "Save As.."
  9. Salvează fișierul ca "yourthemename.pot" în directorul "languages" din directorul temei tale (asigură-te că adaugi extensia .pot la numele fișierului, deoarece implicit va salva ca .po)
  10. În meniul "Catalog" selectează "Properties" din nou
  11. Mergi la fila a 2-a "Sources paths"
  12. Setează valoarea pentru "Base path" la ../ (fișierul .pot este salvat într-un subdirector, așa că în acest fel setezi baza la directorul părinte, adică directorul temei tale)
  13. Lângă "Path" apasă pe butonul "New item" și introdu . (acest lucru va face ca programul să scaneze directorul temei tale și subdirectoarele sale)
  14. Apasă pe butonul "OK" din partea de jos
  15. În fereastra proiectului apasă pe "Update" (a doua pictogramă din partea de sus)
  16. În meniul "File" apasă "Save"

Și gata! :)

23 nov. 2014 22:55:52
Comentarii

Acest lucru nu funcționează pentru WordPress și modificările specifice ale sistemului de traducere. Este incomplet, în cel mai bun caz.

Otto Otto
30 ian. 2016 03:04:18

A funcționat foarte bine pentru plugin-ul meu

Pablo S G Pacheco Pablo S G Pacheco
17 ian. 2017 17:12:47

Funcționează pentru plugin, dar nu traduce descrierea plugin-ului din header

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

PoEdit (versiunea gratuită) nu oferă opțiunea de a salva un fișier nou ca fișier .pot

PaulJ PaulJ
10 dec. 2021 20:00:51
8
27

Puteți face acest lucru cu instrumentele WordPress, fără a folosi POEdit.

Mai întâi, efectuați un checkout SVN din http://develop.svn.wordpress.org/trunk/:

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

Apoi, navigați la directorul cu instrumentele i18n:

cd wpdev/tools/i18n/

Ulterior, rulați scriptul makepot.php pe directorul temei dumneavoastră:

php makepot.php wp-theme /calea/catre/tema/dvs nume-tema.pot

Aceasta va crea un fișier nume-tema.pot pentru dumneavoastră. Folosiți-l în orice instrument standard de traducere preferați.

Această metodă este mai bună pentru că utilizează codul WordPress pentru a găsi funcțiile i18n, astfel încât nu veți rata niciuna dintre ele. În plus, va găsi și va adăuga informații precum cele din antetul temei, cum ar fi numele, descrierea etc. Acest lucru permite ca acestea să fie traduse. Asigurați-vă că includeți antetul "Text Domain:" în style.css pentru ca acestea să funcționeze.

23 nov. 2014 23:07:09
Comentarii

va funcționa și pentru un plugin?

Maruti Mohanty Maruti Mohanty
25 dec. 2014 08:57:48

Da, doar folosește "wp-plugin" în loc de "wp-theme" și va genera un fișier POT pentru un plugin.

Otto Otto
25 dec. 2014 14:39:01

Orice altă metodă care nu folosește instrumentele specifice WordPress este defectă într-un fel sau altul.

Otto Otto
30 ian. 2016 03:03:22

Instrumente minunate! Deși a continuat să arunce erori precum "Nu am putut genera fișierul" chiar dacă am folosit chmod +x pe directoare..

Ismail Ismail
22 dec. 2016 15:14:21

De ce ar ajuta chmod +x? Poate ar trebui să încerci să faci directorul scriibil în loc de executabil.

Otto Otto
23 dec. 2016 11:25:18

Mulțumesc Otto, nu am primit notificare pentru asta, dar acum sunt pe Ubuntu și funcționează aproape perfect!

Ismail Ismail
25 ian. 2017 15:53:09

Am urmat aceiași pași, am tradus tot, dar nu am reușit să traduc descrierea pluginului în secțiunea de antet a pluginului.

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

Dacă traduci un plugin, asigură-te că folosești "wp-plugin" în comandă, astfel încât să știe ce antete să caute.

Otto Otto
27 feb. 2018 23:24:59
Arată celelalte 3 comentarii
5
21

Puteți încerca Eazy Po.

  • Din meniul fișier, selectați „New from source code files..” (Nou din fișierele codului sursă..).
  • În fereastra xgettext Command Manager; apăsați „Browse folder” (Răsfoiește directorul) pentru a selecta folderul sursă de bază.
  • În panoul Build, apăsați butonul „Execute Command” (Execută comandă) pentru a genera fișierul Pot.
11 iun. 2014 05:46:48
Comentarii

Mult mai bun și mai ușor de utilizat decât POEdit. Interfață curată. Are toate funcțiile de traducere i18n în lista de cuvinte cheie în mod implicit. Mulțumesc.

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

Am folosit acest instrument după ce am realizat că funcțiile WordPress în POEdit sunt plătite. A funcționat perfect!

Swen Swen
30 nov. 2018 18:17:07

A funcționat perfect și pentru mine și este mult mai ușor, mult mai ușor decât poedit.

Loc_rabbirt Loc_rabbirt
17 apr. 2020 10:53:43

Nu este disponibil pentru Linux :(

Tofandel Tofandel
17 aug. 2021 14:19:09

Nu mai este actualizat, ia în considerare utilizarea WP CLI.

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

Puteți renunța complet la instrumentele externe cu ajutorul plugin-ului Loco Translate. L-am încercat acum aproximativ un an și de atunci nu am mai folosit POEdit. Instalați-l pe site-ul vostru de test și creați un fișier POT cu un singur clic.

13 iul. 2015 22:02:40
Comentarii

Acest lucru nu funcționează pentru WordPress și modificările specifice ale sistemului de traducere. Este incomplet, cel puțin.

Otto Otto
30 ian. 2016 03:05:30

Ce? Este un plugin WP.

certainlyakey certainlyakey
16 oct. 2017 11:31:18
0

Pentru cei care preferă să folosească Poedit în loc de Easy Po.

  1. Descarcă (cea mai recentă versiune de) Poedit și instalează
  2. Accesează File>New. Va apărea o filă nouă, selectează limba în care dorești să traduci și Salvează (ctrl + s) în folderul root al temei tale WordPress.

  3. Pe pagina următoare, dă click pe - "Extract from sources". Fila care va apărea este similară cu cele din linkurile pe care le-ai inserat. "Project Info" acum se numește "Translation Properties", iar "Paths" și "Keywords" sunt "Sources Paths" și respectiv "Sources keywords".

31 mar. 2016 04:31:49
0

Am aceeași problemă, soluția se află în primul tab când extrageți catalogul, ar trebui să selectați UTF8 recomandat, iar în al 3-lea tab "Surse de cuvinte cheie", faceți clic pe butonul "Element nou" (al 2-lea buton) și introduceți un cuvânt cheie, repetând acest proces pentru fiecare dintre cuvintele cheie (__, _e).

18 oct. 2016 06:28:48
0

Cum a spus Otto:

Pentru utilizatorii de Mac, aș face ceva de genul:

  • După instalare prin svn co http://develop.svn.wordpress.org/trunk/ wpdev

Deci...

  • Creează un director /languages/ în tema ta
  • Creează un fișier de comandă precum lang.command în acel director /languages/
  • În interiorul lang.command

adaugă cod cam așa...

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

PS: Schimbă calea corectă către makepot.php și mytheme cu numele temei tale

Acum, de fiecare dată când vrei să generezi un nou fișier .POT, poți rula simplu lang.command

director

2 mar. 2017 13:15:32
0

O altă soluție alternativă pentru crearea fișierelor .pot pentru cei care preferă NPM este wp-pot. Vine cu o serie de opțiuni pe care le poți personaliza după preferințe. Foarte simplu de configurat.

9 mai 2020 15:46:19
1
-1

Încearcă acest articol: Cum să creezi un fișier .pot sau .po folosind Poedit. Acesta descrie fluxul de lucru și indică faptul că fișierele .po și .pot sunt identice.

În mod implicit, Poedit salvează fișierul ca .po, dar deoarece cele două fișiere sunt identice, poți să îl salvezi ca .pot pur și simplu alegând să salvezi fișierul .po ca .pot

11 iun. 2014 08:43:48
Comentarii

Acest lucru nu funcționează pentru WordPress și modificările specifice ale sistemului de traducere. Este incomplet în cel mai bun caz.

Otto Otto
30 ian. 2016 03:05:23
1
-1

Script pentru crearea automată a fișierului .po, adaugă automat toate textele din cod

  1. Adaugă load_theme_textdomain('my-textdomain',DIR.'/languages/');
  2. Crează folderul wp-content/themes/MY_THEME/languages (adaugă fișierul .mo al limbii tale în acest folder)
  3. Crează po.php și adaugă acest script:
<?php /*Script by Sien.com.vn */
define('WP_USE_THEMES', true);

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

function title_p($title) {

$title='Creare 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">Eroare, Textdomain <b>'.$textdomain.'</b> negăsit!</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">Succes</span> -> Salvat în: '.__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>Limbă: <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">Textdomain negăsit [ <b>load_theme_textdomain ("your-textdomain","path_to_language_folder");</b> ]</div>';}else{
echo '<p>Textdomain: <select name="textdomain">'.$textdomain.'</select></p>';
}

echo '<p>
<input type="submit" value="Crează fișier .po nou"/>
</p>
</div>
</form>';

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

}

echo '</div>';

get_footer(); 
  1. Accesează youdomain/wp-content/themes/MY_THEME/languages/po.php și creează fișierul .po
  2. Copiază wp-content/themes/MY_THEME/languages/[LANG].po pe desktop și deschide cu Poedit -> Compilează MO -> copiază [LANG].mo în folderul languages

Folosește ca echo __('Acest text','your-textdomain');

24 nov. 2017 12:24:34
Comentarii

Nu are sens să faci asta, în timp ce există deja instrumente CLI care fac magia, ia în considerare utilizarea WP CLI pentru victorie.

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