วิธีสร้างไฟล์. 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.