วิธีสร้างไฟล์. pot ด้วย POedit


33

ฉันใช้เวลาหลายชั่วโมงในวันนี้กับสิ่งที่ดูเหมือนว่าเป็นอะไรที่เรียบง่ายจริงๆซึ่งก็คือการสร้างไฟล์. pot สำหรับธีม Wordpress ที่ฉันกำลังสร้าง ฉันได้อ่านบทความ Smashing Magazine , บทความTutsplusและอีกไม่กี่เรื่องเกี่ยวกับวิธีใช้Poeditเพื่อสร้างไฟล์. potสำหรับชุดรูปแบบจากนั้นสร้างไฟล์. mo และ. po แต่น่าเสียดายที่ฉันยังติดอยู่ในตอนแรก ขั้นตอน

ฉันติดตั้ง Poedit และพบว่า UI นั้นแตกต่างจากที่แสดงในบทช่วยสอนทั้งหมดและดูเหมือนว่าไม่มีตัวเลือกในการสร้างไฟล์. pot อีกต่อไป สิ่งเดียวที่มีคือการสร้างไฟล์. po และ. mo จากไฟล์. pot ที่มีอยู่ซึ่งไม่ใช่สิ่งที่ฉันต้องการในตอนนี้

ดังนั้นใครบางคนสามารถบอกฉันได้ว่าฉันจะสร้างไฟล์. pot ด้วย Poedit ได้อย่างไรหรือด้วยวิธีอื่นฉันจะขอบคุณมันจริงๆ

ขอบคุณ!


ลองสร้างไฟล์ทพอท
WisdmLabs

คำตอบ:


18

คุณอาจลองEazy Po

  • จากเมนูไฟล์เลือก“ ใหม่จากไฟล์ซอร์สโค้ด .. ”
  • ในหน้าต่าง xgettext Command Manager; กด“ เรียกดูโฟลเดอร์” เพื่อเลือกโฟลเดอร์ต้นทาง
  • ในบานหน้าต่าง Build ให้กดปุ่ม“ Execute Command” เพื่อสร้างไฟล์ Pot

ดีกว่าและง่ายกว่า POEdit มาก ล้าง UI มีฟังก์ชั่นการแปล i18n ทั้งหมดในรายการคำหลักตามค่าเริ่มต้น ขอขอบคุณ.
Paras Shah

ใช้สิ่งนี้หลังจากตระหนักว่าฟีเจอร์ WordPress ของ POEdit ได้รับการชำระแล้ว ทำงานอย่างสมบูรณ์แบบ!
Swen

37

นี่คือวิธีที่คุณสามารถสร้างไฟล์. pot สำหรับธีมของคุณด้วย Poedit (รุ่นฟรี, เวอร์ชั่น 1.6.10) บน OS X

แนวปฏิบัติที่เหมาะสมที่สุดคือการบันทึกไฟล์ภาษาในโฟลเดอร์ชื่อ "languages" ในไดเร็กทอรีธีมของคุณ หากคุณยังไม่ได้สร้างมันก่อนที่จะเริ่ม

ใน Poedit:

  1. ในเมนู "ไฟล์" เลือก "ใหม่"
  2. เลือกภาษาที่คุณใช้ในชุดรูปแบบของคุณ (อาจเป็นภาษาอังกฤษ)
  3. ในเมนู "แคตตาล็อก" เลือก "คุณสมบัติ"
  4. ป้อนข้อมูลโครงการในแท็บ "คุณสมบัติการแปล"
  5. ไปที่แท็บ 3 "คำหลักแหล่งที่มา"
  6. คลิกที่ "รายการใหม่" ปุ่ม (ปุ่มที่ 2) และป้อนคำหลักและทำซ้ำนี้สำหรับแต่ละคำหลักของคุณ ( __, _e, esc_attr_eฯลฯ )
  7. คลิกที่ปุ่ม "ตกลง" ที่ด้านล่าง
  8. ในเมนู "ไฟล์" เลือก "บันทึกเป็น .. "
  9. บันทึกไฟล์เป็น "yourthemename.pot" ในโฟลเดอร์ "languages" ในไดเรกทอรีธีมของคุณ (ตรวจสอบให้แน่ใจว่าคุณเพิ่มนามสกุล. pot ลงในชื่อไฟล์เพราะตามค่าเริ่มต้นจะบันทึกเป็น. po)
  10. ในเมนู "แคตตาล็อก" เลือก "คุณสมบัติ" อีกครั้ง
  11. ไปที่แท็บที่ 2 "เส้นทางที่มา"
  12. ตั้งค่าสำหรับ "Base path" เป็น../(ไฟล์. pot จะถูกบันทึกไว้ในไดเรกทอรีย่อยดังนั้นวิธีนี้คุณจะตั้งค่าฐานเป็นไดเรกทอรีหลักเช่นไดเรกทอรีธีมของคุณ)
  13. ถัดจาก "เส้นทาง" คลิกที่ปุ่ม "รายการใหม่" และป้อน.(สิ่งนี้จะทำให้มันสแกนไดเรกทอรีธีมและไดเรกทอรีย่อยของคุณ)
  14. คลิกที่ปุ่ม "ตกลง" ที่ด้านล่าง
  15. ในหน้าต่างโครงการคลิกที่ "อัพเดท" (ไอคอนที่ 2 ที่ด้านบน)
  16. ในเมนู "ไฟล์" คลิก "บันทึก"

คุณเสร็จแล้ว :)


สิ่งนี้ไม่ทำงานสำหรับ WordPress และการเปลี่ยนแปลงเฉพาะกับระบบการแปล มันไม่สมบูรณ์แบบที่สุด
อ็อตโต

1
มันใช้งานได้ดีสำหรับปลั๊กอินของฉัน
Pablo SG Pacheco

มันใช้งานได้กับปลั๊กอิน แต่ไม่ได้แปลคำอธิบายปลั๊กอินจากส่วนหัว
Awsme Sandy

25

คุณสามารถทำได้ด้วยเครื่องมือ WordPress โดยไม่มี POEdit

ก่อนอื่นให้ทำการเช็คเอาต์ svn ของhttp://develop.svn.wordpress.org/trunk/ :

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

สิ่งนี้จะสร้างไฟล์ชื่อไฟล์สำหรับคุณ ใช้ในเครื่องมือแปลมาตรฐานใด ๆ ที่คุณต้องการ

นี่จะดีกว่าเพราะใช้รหัส WordPress เพื่อค้นหาฟังก์ชั่น i18n ดังนั้นคุณจะไม่พลาดสิ่งใดเลย นอกจากนี้มันจะค้นหาและเพิ่มสิ่งต่าง ๆ เช่นข้อมูลส่วนหัวของชุดรูปแบบเช่นชื่อคำอธิบาย ฯลฯ ซึ่งจะช่วยให้ผู้ใช้สามารถแปลได้เช่นกัน ตรวจสอบให้แน่ใจว่าคุณใส่หัวข้อ "โดเมนข้อความ:" ใน style.css เพื่อให้ทำงานได้


จะใช้งานสำหรับปลั๊กอินด้วยหรือไม่
Maruti Mohanty

2
ใช่เพียงแค่ใช้ "wp-plugin" แทนที่จะเป็น "wp-theme" และมันจะสร้างไฟล์ POT สำหรับปลั๊กอิน
อ็อตโต

วิธีอื่น ๆ ที่ไม่ได้ใช้เครื่องมือเฉพาะของ WordPress นั้นใช้งานไม่ได้
อ็อตโต

เครื่องมือสุดยอด! แม้ว่ามันจะถูกเก็บไว้ขว้างปาข้อผิดพลาดเช่น "ไม่สามารถสร้างไฟล์" แม้ว่าฉันchmod +xไดเรกทอรี ..
ซามูเอล ELH

1
ทำไม chmod + x จะช่วย? บางทีคุณควรลองสร้างไดเรกทอรีเขียนแทนการปฏิบัติการ
อ็อตโต

5

ผมพบว่าวิธีที่ง่ายที่สุดในขณะนี้คือการใช้WP-CLI นำทางไปยังธีมหรือปลั๊กอินของคุณและดำเนินการคำสั่งต่อไปนี้ (หลังจากติดตั้ง WP-CLI):

wp i18n make-pot . languages/my.pot

(ดูเอกสารประกอบของคำสั่ง)

จากนั้นคุณสามารถแก้ไขไฟล์นี้ด้วย Poedit หรือเครื่องมือแปลที่มีประโยชน์อื่น ๆ


0

คุณสามารถวางเครื่องมือภายนอกพร้อมกับปลั๊กอินLoco Translate ฉันลองมาเมื่อประมาณหนึ่งปีที่แล้วและไม่เคยใช้ POEdit มาก่อน ติดตั้งในเว็บไซต์ทดสอบของคุณและสร้างไฟล์ POT ได้ด้วยคลิกเดียว


สิ่งนี้ไม่ทำงานสำหรับ WordPress และการเปลี่ยนแปลงเฉพาะกับระบบการแปล มันไม่สมบูรณ์แบบที่สุด
อ็อตโต

Woot? มันเป็นปลั๊กอิน WP
แน่นอน

0

สำหรับทุกคนที่ต้องการใช้ Poedit แทน Easy Po

  1. ดาวน์โหลด (รุ่นล่าสุด) Poedit และติดตั้ง
  2. ไปที่ไฟล์> ใหม่ แท็บใหม่จะปรากฏขึ้นเลือกภาษาของการแปลและบันทึก (ctrl + s) ไปยังโฟลเดอร์รูทของธีมเวิร์ดเพรสของคุณ

  3. ในหน้าคุณจะเห็นต่อไปคลิกที่ - "แยกจากแหล่งที่มา" แท็บที่คุณจะเห็นถัดไปนั้นคล้ายกับที่ใช้ในลิงก์ที่คุณวาง "ข้อมูลโครงการ" ขณะนี้ "คุณสมบัติการแปล" เช่นเดียวกับ "เส้นทาง" และ "คำหลัก" คือ "เส้นทางที่มา" และ "คำหลักแหล่งที่มา" ตามลำดับ


0

ฉันมีปัญหาเดียวกันการแก้ปัญหาอยู่ในแท็บแรกเมื่อคุณดึงแคตตาล็อกควรใส่ UTF8 ที่แนะนำและในแท็บที่ 3 "คำหลักแหล่งที่มา" คลิกที่ปุ่ม "รายการใหม่" (ปุ่มที่ 2) และป้อนคำหลักและซ้ำ สิ่งนี้สำหรับแต่ละคำหลักของคุณ (__, _e)


0

ขณะที่อ็อตโตพูดว่า :

สำหรับผู้ใช้ Macฉันจะทำสิ่งที่ชอบ:

  • หลังจากติดตั้งโดย svn co http://develop.svn.wordpress.org/trunk/ wpdev

ดังนั้น...

  • ทำให้/languages/dir ในชุดรูปแบบของคุณ
  • สร้างไฟล์คำสั่งเหมือนlang.commandใน/languages/dir นั้น
  • ภายใน lang.command

เพิ่มรหัสบางอย่างเช่นนี้ ..

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

PS:เปลี่ยนถูกต้องของคุณmakepot.phpเส้นทางและmythemeกับชื่อธีมของคุณ

ตอนนี้ทุกครั้งที่คุณต้องการสร้างไฟล์. POTใหม่คุณสามารถรันlang.command ได้

dir


0

สคริปต์สร้างไฟล์. po อัตโนมัติโดยอัตโนมัติเพิ่มข้อความทั้งหมดจากโค้ดของคุณ

  1. เพิ่ม load_theme_textdomain ('my-textdomain', DIR . '/ languages ​​/');
  2. สร้างโฟลเดอร์ wp-content / themes / MY_THEME / languages ​​(เพิ่มไฟล์ภาษา. 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-content / themes / MY_THEME / languages ​​/ po.phpและสร้างไฟล์. po
  2. คัดลอกwp-content / themes / MY_THEME / languages ​​/ [LANG] .poไปยังเดสก์ท็อปและเปิดด้วยPoedit -> Compile MO -> คัดลอก [LANG] .mo ไปยังโฟลเดอร์ภาษา

ใช้เป็นecho __ ('ข้อความนี้', 'you-textdomain');


-1

ลองโพสต์นี้: สร้างหม้อหรือไฟล์ .po ใช้ Poedit มันอธิบายถึงเวิร์กโฟลว์และระบุว่าไฟล์. po และ. pot เหมือนกัน

ตามค่าเริ่มต้น Poedit จะบันทึกไฟล์ของคุณเป็นไฟล์. po แต่เนื่องจากไฟล์ทั้งสองเหมือนกันคุณจึงสามารถแก้ไขได้โดยเพียงแค่เลือกบันทึกไฟล์. po เป็นไฟล์. pot


สิ่งนี้ไม่ทำงานสำหรับ WordPress และการเปลี่ยนแปลงเฉพาะกับระบบการแปล มันไม่สมบูรณ์แบบที่สุด
อ็อตโต
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.