Textdomain ของ Theme คืออะไร?


19

ฉันพบว่าธีม WordPress ใช้ฟังก์ชั่นนี้ แต่ฉันไม่เข้าใจว่าอะไรคือจุดประสงค์ของมันและในกรณีนี้'themify'คืออะไร? นี่คือตัวอย่างบางส่วนใน Themify functions.php:

1)

load_theme_textdomain( 'themify', TEMPLATEPATH.'/languages' );

2)

if (function_exists('register_nav_menus')) {
        register_nav_menus( array(
            'main-nav' => __( 'Main Navigation', 'themify' ),
            'footer-nav' => __( 'Footer Navigation', 'themify' ),
        ) );
    }

และในไฟล์ tempate:

3) <?php _e( 'Sorry, nothing found.', 'themify' ); ?>

และอื่น ๆ อีกมากมาย! ข้อสงสัยของฉันคือสิ่งที่'themify'ยืนอยู่? วัตถุประสงค์ของพวกเขาคืออะไร? ฉันสามารถเปลี่ยนหรือลบได้หรือไม่ สถานที่คืออะไร'themify'เพื่อ?

คำตอบ:


23

ในกรณีนี้'themify'คือtextdomain ที่กำหนดไว้สำหรับ Theme ซึ่งใช้เพื่อทำให้ Theme สามารถแปลได้ (อ้างอิง Codex: load_theme_textdomain())

การทำให้ธีมพร้อมแปลต้องใช้สองสามขั้นตอน

  1. กำหนดโดเมนข้อความของ Theme :

    load_theme_textdomain( 'themify', TEMPLATEPATH.'/languages' );
  2. กำหนดสตริงที่แปลได้ในเทมเพลต

    สิ่งนี้ทำได้โดยใช้หนึ่งในสองสามฟังก์ชั่นการแปล: __()(สำหรับสตริงที่ส่งคืน ), _e()(สำหรับสตริงที่สะท้อน ) และ_x()/ _ex()(สำหรับสตริงบริบท gettext ) มีคนอื่น แต่คุณได้รับความคิด ...

    สตริงข้อความแบบสแตติกเช่น<p>Hello world!</p>ถูกห่อในฟังก์ชันการแปลที่เหมาะสมเช่น<p><?php _e( 'Hello World!', 'themify' ); ?></p>เพื่อให้พร้อมสำหรับการแปล

  3. สร้างการอ้างอิงไฟล์. mo / .po
    เกี่ยวกับวิธีแก้ไขไฟล์ภาษา


@SokVanrithy อ้างถึงQ&A นี้สำหรับวิธีจัดการกับ.mo/.poไฟล์ (ชิปผมยังไม่ได้เพิ่มการเชื่อมโยงเข้าสู่คำตอบของคุณในขณะที่คุณอาจจะมีข้อเสนอแนะอื่น :)
brasofilo

1
@brasofilo รู้สึกฟรีเพื่อเพิ่มถ้าคุณต้องการ ฉันคิดว่ามันเกินขอบเขตสำหรับคำถามที่ถาม แต่ยังมีประโยชน์
Chip Bennett

ทำไมคุณต้องเปลี่ยนมัน? คุณฟอร์กธีมหรือไม่
Chip Bennett

ใช่ฉันต้องการกำจัดพวกเขา ผมได้ดาวน์โหลดธีมจาก Webdesigndepot base themeและมันเรียกร้อง ฉันถามผู้เขียนว่าฉันจะสามารถเปลี่ยนรหัสเดิมได้หรือไม่ พวกเขาได้รับอนุญาตเพราะมันเป็นชุดรูปแบบฐานเปล่าสำหรับผู้ที่ต้องการมีโครงสร้างสำหรับชุดรูปแบบที่กำหนดเอง นอกจากนี้มันเป็นของขวัญจากผู้เขียนที่นั่นเพื่อมอบให้กับผู้อ่าน ข้อสงสัยของฉันเป็นเหมือนข้างบน!
Sok Vanrithy

1
แน่นอนคุณสามารถกำจัดพวกเขา แต่มันก็ไม่เจ็บเพียงเพื่อทิ้งพวกเขา คุณยังสามารถเปลี่ยนtextdomainเป็นสตริงที่แตกต่างกันเพื่ออ้างอิงธีมแยกของคุณ การพัฒนาแนวปฏิบัติที่ดีรวมถึงการทำธีมแปลดังนั้นผมจะแนะนำให้กับการลบพวกเขาอย่างสิ้นเชิง ที่กล่าวว่าคุณสามารถแน่นอนถ้าคุณเลือกที่จะ
Chip Bennett
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.