पीओडिट के साथ .pot फाइलें कैसे बनाएं?


33

मैंने आज घंटों बिताए हैं जो वास्तव में कुछ सरल लग रहा था, जो कि एक Wordpress विषय के लिए एक .pot फ़ाइल बनाने के लिए है जो मैं बना रहा हूं। मैंने स्मैशिंग मैगज़ीन लेख , टट्सप्लस लेख और कुछ अन्य लोगों को पढ़ा है कि किसी विषय के लिए .pot फ़ाइलें बनाने के लिए Poedit का उपयोग कैसे किया जाए , और फिर .mo और .po फ़ाइलें बनाएँ, लेकिन दुख की बात है, मैं अभी भी पहले पर अटका हुआ हूं। कदम।

मैंने Poedit स्थापित किया है और मुझे लगता है कि UI सभी ट्यूटोरियल में दिखाया गया है कि पूरी तरह से अलग है और ऐसा लगता है कि .pot फ़ाइल बनाने के लिए और कोई विकल्प नहीं है। केवल एक चीज जो उपलब्ध है, वह एक मौजूदा .pot फ़ाइल से .po और .mo फाइलें बनाने की है, जो कि अब मेरी जरूरत नहीं है।

तो क्या कोई मुझे बता सकता है कि मैं पोएडिट का उपयोग करके या किसी अन्य विधि से .pot फाइलें कैसे बना सकता हूं, मैं वास्तव में इसकी सराहना करूंगा।

धन्यवाद!


जवाबों:


18

आप ईज़ी पो की कोशिश कर सकते हैं ।

  • फ़ाइल मेनू से "स्रोत कोड फ़ाइलों से नया .." चुनें।
  • Xgettext कमांड मैनेजर विंडो में; आधार स्रोत फ़ोल्डर का चयन करने के लिए "फ़ोल्डर ब्राउज़ करें" दबाएं।
  • पॉट फ़ाइल जनरेट करने के लिए बिल्ड पेन प्रेस "एक्सक्यूट कमांड" बटन में।

POEdit से बहुत बेहतर और आसान। यूआई को साफ करें। डिफ़ॉल्ट रूप से कीवर्ड सूची में सभी i18n अनुवाद कार्य हैं। धन्यवाद।
पारस शाह

इसका उपयोग यह महसूस करने के बाद किया जाता है कि POEdit की वर्डप्रेस सुविधाओं का भुगतान किया जाता है। पूरी तरह से काम किया!
स्वेन

37

यहां बताया गया है कि आप ओएस एक्स पर पोएडिट (मुफ्त संस्करण, संस्करण 1.6.10) के साथ अपनी थीम के लिए एक .pot फ़ाइल कैसे बना सकते हैं।

सबसे अच्छा अभ्यास अपनी थीम डायरेक्टरी में "भाषाओं" नामक फ़ोल्डर में भाषा फ़ाइलों को सहेजना है। यदि आप पहले से ही नहीं है, तो इसे शुरू करने से पहले बनाएं।

पोएडिट में:

  1. "फ़ाइल" मेनू में "नया" चुनें
  2. उस भाषा का चयन करें जिसे आपने अपने विषय में इस्तेमाल किया था (शायद अंग्रेजी)
  3. "कैटलॉग" मेनू में "गुण" चुनें
  4. "अनुवाद गुण" टैब में प्रोजेक्ट जानकारी दर्ज करें
  5. 3 टैब पर जाएं "स्रोत कीवर्ड"
  6. "नया आइटम" बटन (2 बटन) पर क्लिक करें और एक कीवर्ड दर्ज करें और अपने प्रत्येक कीवर्ड के लिए यह दोहराने ( __, _e, esc_attr_e, आदि)
  7. सबसे नीचे "ओके" बटन पर क्लिक करें
  8. "फ़ाइल" मेनू में "इस रूप में सहेजें .." का चयन करें
  9. अपनी थीम डायरेक्टरी में "भाषाओं" फ़ोल्डर में फ़ाइल को "yourthemename.pot" के रूप में सहेजें (सुनिश्चित करें कि आप .pot एक्सटेंशन को फ़ाइल नाम में जोड़ें क्योंकि डिफ़ॉल्ट रूप से यह .po के रूप में बचाएगा।
  10. "कैटलॉग" मेनू में फिर से "गुण" चुनें
  11. 2 टैब "स्रोत पथ" पर जाएं
  12. "बेस पथ" के लिए मान सेट करें ../(.pot फ़ाइल को एक उपनिर्देशिका में सहेजा जाता है ताकि इस तरह से आप मूल निर्देशिका, यानी अपनी थीम निर्देशिका के लिए आधार सेट करें)।
  13. "पथ" के आगे "नया आइटम" बटन पर क्लिक करें और दर्ज करें .(यह आपकी थीम निर्देशिका और इसके उपनिर्देशिका को स्कैन करेगा)
  14. सबसे नीचे "ओके" बटन पर क्लिक करें
  15. प्रोजेक्ट विंडो में "अपडेट" पर क्लिक करें (शीर्ष पर दूसरा आइकन)
  16. "फ़ाइल" मेनू में "सहेजें" पर क्लिक करें

और आपने कल लिया :)


यह वर्डप्रेस और अनुवाद प्रणाली के विशिष्ट परिवर्तनों के लिए काम नहीं करता है। यह सबसे अच्छा अधूरा है।
ओटो

1
यह मेरे प्लगइन के लिए वास्तव में अच्छी तरह से काम किया
पाब्लो एसजी पाचेको

यह प्लगइन के लिए काम करता है, लेकिन हेडर से प्लगइन विवरण का अनुवाद नहीं करता है
Awsme सैंडी

25

आप POEdit के बिना, वर्डप्रेस टूल के साथ ऐसा कर सकते हैं।

सबसे पहले, http://develop.svn.wordpress.org/trunk/ का svn चेकआउट करें :

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

फिर, इसमें i18n टूल डायरेक्टरी पर जाएँ:

cd wpdev/tools/i18n/

तो बस अपने विषय की निर्देशिका पर makepot.php चलाएं:

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

यह आपके लिए एक themename.pot फ़ाइल बनाएगा। किसी भी मानक अनुवाद उपकरण में इसका उपयोग करें।

यह बेहतर है क्योंकि यह i18n फ़ंक्शन को खोजने के लिए वर्डप्रेस कोड का उपयोग करता है, इसलिए आप उनमें से किसी को भी याद नहीं करेंगे। इसके अतिरिक्त, यह थीम हेडर जानकारी, जैसे नाम, विवरण, आदि जैसी चीजों को ढूंढ और जोड़ देगा। यह उन लोगों के लिए भी अनुवादित होने की अनुमति देता है। सुनिश्चित करें कि आप "Text डोमेन:" शीर्षक को अपनी शैली में शामिल करते हैं।


यह एक प्लगइन के लिए भी काम करेगा?
मारुति मोहंती

2
हां, बस "wp-theme" के बजाय "wp-plugin" का उपयोग करें और यह एक प्लगइन के लिए एक पॉट फ़ाइल उत्पन्न करेगा।
ओट्टो

हर दूसरा तरीका जो वर्डप्रेस विशिष्ट टूल का उपयोग नहीं करता है, किसी तरह से टूट जाता है।
ओटो

बहुत बढ़िया उपकरण! हालांकि यह "मैं फाइल chmod +xनिर्देशिका उत्पन्न नहीं कर सकता" जैसी त्रुटियों को फेंक रहा था , हालांकि ..
शमूएल एल्ह

1
क्यों chmod + x मदद करेगा? हो सकता है कि आपको निष्पादन योग्य के बजाय निर्देशिका को योग्य बनाने का प्रयास करना चाहिए।
ओटो

5

मैंने पाया कि सबसे आसान तरीका अब WP-CLI का उपयोग करना है । अपने थीम या प्लगइन पर नेविगेट करें और निम्न कमांड निष्पादित करें (WP-CLI स्थापित होने के बाद):

wp i18n make-pot . languages/my.pot

( कमांड के दस्तावेज देखें )

फिर आप इस फाइल को Poedit या किसी अन्य आसान अनुवाद टूल से संपादित कर सकते हैं।


0

आप बाहरी उपकरणों को लोको ट्रांसलेट प्लगइन के साथ पूरी तरह से छोड़ सकते हैं । मैंने इसे लगभग एक साल पहले आज़माया है और कभी भी POEdit का उपयोग नहीं किया है। इसे अपने परीक्षण स्थल पर स्थापित करें और एक क्लिक से POT फाइल बनाएं।


यह वर्डप्रेस और अनुवाद प्रणाली के विशिष्ट परिवर्तनों के लिए काम नहीं करता है। यह सबसे अच्छा अधूरा है।
ओटो

Woot? यह एक WP प्लगइन है।
निश्चित रूप से

0

उन लोगों के लिए जो ईज़ी पो के बजाय पोएडिट का उपयोग करना पसंद करते थे।

  1. डाउनलोड करें (पोएडिट और इंस्टॉल का नवीनतम संस्करण)
  2. फ़ाइल> नई पर जाएं। एक नया टैब आएगा, अपनी वर्डप्रेस थीम के रूट फोल्डर में अपनी भाषा और सेव (ctrl + s) चुनें।

  3. अगले पृष्ठ पर आप देखेंगे, "स्रोतों से निकालें" पर क्लिक करें। अगला टैब आप देखेंगे जो आपके द्वारा चिपकाए गए लिंक में उपयोग किया गया है। "प्रोजेक्ट जानकारी" अब "अनुवाद गुण" है, साथ ही साथ "पथ" और "कीवर्ड" क्रमशः "स्रोत पथ" और "स्रोत कीवर्ड" हैं।


0

मेरे पास एक ही समस्या है, जब आप कैटलॉग को निकालते हैं, तो पहले टैब में समाधान होता है, जिसे यूटीएफ 8 की सिफारिश की जानी चाहिए, और 3 वें टैब "स्रोत कीवर्ड" में, "नया आइटम" बटन (दूसरा बटन) पर क्लिक करें और एक कीवर्ड दर्ज करें और दोहराएं यह आपके प्रत्येक कीवर्ड (__, _e) के लिए है।


0

जैसा कि ओटो ने कहा :

मैक उपयोगकर्ताओं के लिए , मैं कुछ ऐसा करूंगा:

  • द्वारा स्थापित करने के बाद svn co http://develop.svn.wordpress.org/trunk/ wpdev

इसलिए...

  • /languages/अपने विषय पर dir बनाओ
  • lang.commandउस /languages/डायर की तरह एक कमांड फाइल बनाएं
  • के भीतर lang.command

कुछ इस तरह कोड जोड़ें ..

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

पुनश्च: अपने विषय के नाम के लिए अपने सही makepot.php पथ और mytheme बदलें

अब हर बार जब आप एक नई .POT फ़ाइल बनाना चाहते हैं , तो आप बस lang.command चला सकते हैं

dir


0

स्क्रिप्ट ऑटो बनाएँ .po फ़ाइल, ऑटो आप कोड से सभी पाठ जोड़ें

  1. Load_theme_textdomain ('my-textdomain', DIR जोड़ें । '/ भाषाएँ /');
  2. फ़ोल्डर wp-content / themes / MY_THEME / भाषाएँ बनाएं (इस फ़ोल्डर में अपनी भाषा .mo फ़ाइल जोड़ें)
  3. Po.php बनाएं और इस स्क्रिप्ट को जोड़ें:
<?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. जाने के लिए youdomain / wp- सामग्री / विषयों / MY_THEME / भाषाओं / po.php और पुलिस फाइल बनाने
  2. कॉपी WP-सामग्री / विषयों / MY_THEME / भाषाओं / [Lang] पुलिस डेस्कटॉप और इसमें खोलें Poedit -> संकलित एमओ -> प्रतिलिपि [Lang] मो करने के लिए भाषाओं फ़ोल्डर

इको __ के रूप में उपयोग करें ('यह पाठ', 'आप-टेक्सटोमैन');


-1

इस पोस्ट को आज़माएं: Poedit का उपयोग करके .pot या .po फ़ाइल बनाएँ । यह वर्कफ़्लो का वर्णन करता है, और .po और .pot फ़ाइलें समान हैं।

डिफ़ॉल्ट रूप से Poedit आपकी फ़ाइल को एक .po फ़ाइल के रूप में सहेजता है, लेकिन चूंकि दो फ़ाइलें समान हैं, तो आप .po फ़ाइल को .pot के रूप में सहेजने के लिए बस उसी के आसपास प्राप्त कर सकते हैं।


यह वर्डप्रेस और अनुवाद प्रणाली के विशिष्ट परिवर्तनों के लिए काम नहीं करता है। यह सबसे अच्छा अधूरा है।
ओटो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.