รองรับหลายภาษา: ฉันต้องการแบ็กเอนด์: อังกฤษและส่วนหน้าในภาษาที่กำหนด


9

ฉันต้องการแบ็กเอนด์ของ Wordpress เป็นภาษาอังกฤษและใช้ภาษาอื่นสำหรับส่วนหน้า

จนถึงตอนนี้ฉันคิดว่าบางทีฉันสามารถทำได้โดยการตั้งค่าใน wpconfig สถานที่ที่ฉันต้องการใช้ในส่วนหน้าแล้วเพิ่มใน functions.php สิ่งนี้:

add_filter('locale', 'mytheme_backendlocale');
function mytheme_backendlocale($locale) {
    if ( is_admin() ) {
        return 'en_US';
    }
    return $locale;
}

นี่เป็นวิธีปฏิบัติที่ดีที่สุดในการบรรลุสิ่งที่ฉันต้องการหรือฉันควรทำแตกต่างกันหรือไม่?

คำตอบ:


2

ติดตั้งปลั๊กอินWP พื้นเมืองแดชบอร์ด จากนั้นคุณสามารถตั้งค่าหนึ่งภาษาสำหรับส่วนหน้าในของคุณwp-config.phpและผู้ใช้แต่ละคนสามารถเลือกอีกภาษาหนึ่งสำหรับส่วนหลัง
ดูเปลี่ยนภาษาของแม่แบบความคิดเห็นเพื่อดูรายละเอียดและภาพหน้าจอ


1

มีปลั๊กอินที่อาจเป็นสิ่งที่คุณต้องการ

http://wordpress.org/extend/plugins/fe-be-localization/


ดีขอบคุณฉันจะให้ดูรหัส แต่อาจจะไม่ใช้มันเพราะมันไม่ได้รับการปรับปรุงตั้งแต่ปี 2008 และรองรับได้ถึง WP 2.6 เท่านั้น - ถ้าฉันชอบและมีความสามารถอาจจะพยายามคุยกับนักพัฒนา และอัปเดต
unfulvio

โอ้เพิ่งตรวจสอบมันไม่เหมือนกับฟังก์ชั่นที่ผมเขียนไว้ด้านบนในรูปแบบอื่น
unfulvio

ใช่เก่า แต่ดูเหมือนมีเพียงคนเดียวที่อยู่รอบ ๆ หากรหัสเป็นวิธีการที่คุณทำมันแล้วฉันเดาคำตอบคือคุณอยู่ในเส้นทางที่ถูกต้องและเป็นวิธีที่ฉันจะทำมัน .. ไม่สามารถคิดวิธีที่ดีกว่า
Andy James

1

จนถึงตอนนี้ฉันคิดว่าคำตอบของฟุลวิโอนั้นดีที่สุด ฉันใช้ตัวกรองนั้นแม้ในการตั้งค่าแบบหลายไซต์โดยมีเพียงหนึ่งบรรทัด:

add_filter('locale', 'set_admin_locale');
function set_admin_locale($locale) {
  return 'en_US';
}

โดยทั่วไปบางครั้งและในกรณีนี้ฉันใช้เว็บไซต์หลายไซต์สำหรับเว็บไซต์หลายภาษาแทนที่จะเป็นปลั๊กอิน นอกจากนี้ฉันมี 1 ธีมเดียวสำหรับแต่ละภาษา (โดยปกติแล้วจะเป็นธีมลูกของภาษาหลัก) ดังนั้นทุกเว็บไซต์ในเครือข่ายมีภาษาของตัวเอง แต่ในด้านผู้ดูแลระบบฉันต้องการอินเตอร์เฟสทั้งหมดเป็นภาษาอิตาลี

ดังนั้นสิ่งที่ฉันทำคือ:

  1. ฉันไม่ใช้ค่าคงที่ WPLANG ทั่วไปใน wp-config.php
  2. ฉันตั้งค่าภาษาอิตาลีในทุกไซต์ของเครือข่าย
  3. ในทุกฟังก์ชั่นของ theme.php ฉันใช้ตัวกรองด้านบนเพื่อควบคุมภาษา / ส่วนหน้า

หมายเหตุ: ตัวกรองนั้นจะไม่เปลี่ยนภาษาของผู้ดูแลระบบดังนั้นจึงไม่จำเป็นต้องตรวจสอบว่า is_admin ()


0

หากใครยังมองหาสิ่งต่อไปนี้เป็นสิ่งที่คุณควรทำตั้งแต่รุ่น 4.7

function wp_noshor_redefine_locale($locale) {
    if( is_admin() ):
        switch_to_locale('en_US');
    endif;
}
add_filter('init','wp_noshor_redefine_locale');

สิ่งนี้บังคับให้แดชบอร์ดโหลดเป็นภาษาอังกฤษจากนั้นคุณสามารถไปที่การตั้งค่าตั้งค่าภาษาที่คุณต้องการ

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