अपडेट के बाद प्लगइन ट्रांसलेट कैसे रखें?


9

http://wordpress.org/extend/plugins/bbpress/ bbpress 'भाषा फ़ोल्डर (wp-content / plugins / bbpress / bbp-languages) में यह चेतावनी है:

/**
 * Do not put custom translations here. They will be deleted on bbPress updates.
 *
 * Keep custom bbPress translations in /wp-content/languages/
 */

वास्तव में यह कोई नई समस्या नहीं है और हां वे सही हैं। यदि आप एक गैर-अंग्रेजी भाषा के साथ वर्डप्रेस प्लगइन्स का उपयोग कर रहे हैं तो यह बड़ी समस्या है।

मूल रूप से मैंने bbpress का अनुवाद किया। .po और .mo फाइलें। यदि मैं उन्हें अपने सामान्य wp-content / plugins / bbpress / bbp-languages ​​फ़ोल्डर में रखता हूं तो फाइलें काम कर रही हैं। लेकिन जैसा कि ऊपर की चेतावनी कहती है कि अपडेट होने पर हट जाएगी। लेकिन समस्या यह है कि, अनुवाद करने से काम नहीं चल रहा है अगर मैं उन्हें wp-content / languages ​​/ folder में डाल दूं जैसा कि bbpress में सुझाया गया है।

मुझे लगता है कि एक हुक या कुछ और होना चाहिए जो मैं इसे सक्रिय कर सकता हूं लेकिन इसके लिए सबसे अच्छा समाधान क्या है? बस मैं wp-content / languages ​​/ में plugin language files रखना चाहता हूँ


अच्छी तरह से .. मैं bbpress कोड की जाँच करने के बाद .. ऐसा लगता है कि मुझे सीधे / wp-content / भाषाओं / bbpress / में फ़ाइलें डालने की आवश्यकता नहीं है / wp-content / languages ​​/ अब यह bbpress के लिए काम करता है लेकिन सवाल का जवाब पाने के लिए अभी भी जरूरत है अन्य प्लगइन्स के लिए imo
pluginsnsal Korkmaz

जवाबों:


3

आपको कॉल को BBpress की भाषा फ़ाइल में बदलना होगा।

ऐसा करने के लिए एक अच्छी जगह आपकी सामान्य भाषा निर्देशिका में एक भाषा विशिष्ट फ़ाइल है। तुर्की के लिए यह संभवतः एक फ़ाइल होगी tr_TR.php। यह अपने आप लोड हो जाएगा और तभी होगा जब यह आपके ब्लॉग की भाषा से मेल खाता हो। इसे अधिलेखित नहीं किया जाएगा।

BBPress फ़ंक्शन का उपयोग नहीं करता है load_plugin_textdomain, यह load_textdomainइसके बजाय उपयोग करता है । यहाँ आप एक फिल्टर पा सकते हैं:

$mofile = apply_filters( 'load_textdomain_mofile', $mofile, $domain );

तो अपनी भाषा में php फ़ाइल बस पथ बदलने के लिए एक फ़िल्टर जोड़ें:

function load_bbpress_tr_mofile( $mofile, $domain )
{
    if ( 'bbpress' == $domain )
    {
        // replace this. :)
        return 'FULL_PATH_TO_YOUR_FILE';
    }
    return $mofile;
}
add_filter( 'load_textdomain_mofile', 'load_bbpress_tr_mofile', 10, 2 );

लगता है कि कोई बग है .. bbpress.trac.wordpress.org/ticket/1647 इसे देख रहा है .. मैं डिफ़ॉल्ट भाषा फ़ोल्डर wp-content / भाषा / / तो आपके सुझाव के लिए FFULL_PATH_TO_YOUR_FILE ’का उपयोग करूंगा?
सनल कोरकमाज़

आपकी भाषा निर्देशिका का पथ ( WP_LANG_DIR) प्लस आपकी mo-file।
FUXIA

1
अच्छा उत्तर। प्लगइन डेवलपर्स पर ध्यान दें: load_plugin_textdomain()"इनिट" कार्रवाई के दौरान अपनी कॉल करें , अन्यथा हम "load_textdomain_mofile" फ़िल्टर में हुक नहीं कर सकते। तब तक बहुत देर हो चुकी होगी।
गीर्ट

2

आपको जो करना है वह एक सरल प्लगइन बनाना है जो इंस्टॉल किए गए प्लगइन्स के text_domain को प्रबंधित करेगा। यदि आप एक वैश्विक समाधान नहीं चाहते हैं, तो आप अपनी थीम में कोड को अपने फ़ंक्शन में जोड़ सकते हैं।

विचार यह है कि अनुवाद को खोजने के लिए वर्डप्रेस को निर्देश दिया जाए। आंतरिक रूप से सभी प्लगइन्स में यह कुछ इसी तरह का उपयोग करके किया जाता है

load_plugin_textdomain( 'regenerate-thumbnails', false, '/regenerate-thumbnails/localization' );

यह वह फ़ंक्शन है जिसका आप उपयोग करेंगे। जैसा कि आप यहां देख सकते हैं , अंतिम तर्क का उपयोग प्लगइन पथ के सापेक्ष सेट करने के लिए किया जाता है, जहां अनुवाद फाइलें रहती हैं।

आप प्रत्येक प्लगइन के लिए एक पंक्ति डालकर आप जो चाहते हैं वह कर सकते हैं।

load_plugin_textdomain('bbpress', false, '../../languages/bbpress');

यह आपके कस्टम ट्रांसलेशन फ़ाइलों को फ़ोल्डर के बगल में एक फ़ोल्डर से लोड करने के लिए वर्डप्रेस को निर्देश देगा plugins, जिसमें एक फ़ोल्डर होता है जिसका bbpressअनुवाद फ़ाइलों में होता है जो प्रत्येक प्लगइन का उपयोग करते हुए उसी नामकरण का उपयोग करता है।

आपकी विधि, जो सभी प्लगइन्स के लिए टेक्सडेटोमन्स को निर्देश देती है, initको निम्नानुसार चरण में चलना चाहिए

function set_myplugins_languages() {
     .... your code here.....
}
add_action('init', 'set_myplugins_languages');

(इसे उपयोगी मानकर उत्तर के रूप में चिह्नित करना न भूलें)


0

इसके लिए काम करने के लिए आपके पास पहले से ही WP_LANG_DIR में वर्डप्रेस अनुवाद फ़ाइलों को रखने की आवश्यकता है, और उस भाषा में वैश्विक स्थान निर्धारित किया है। यदि आप लोकेल को बदले बिना या केवल वर्डप्रेस की कोर ट्रांसलेशन फाइल मौजूद होने के कारण bbPress के लिए अनुवादों को शामिल कर रहे हैं, तो आपके लोड करने के बावजूद कुछ भी अनुवाद नहीं होगा।

यदि आप अकेले bbPress के लिए लोकेल को ओवरराइड करना चाहते हैं, तो आपको 'bbpress_locale' के लिए एक फिल्टर जोड़ने की आवश्यकता है जो आपको bbPress मो फ़ाइल को ओवरराइड करने की अनुमति देता है।

हालांकि यह सही है कि bbPress 2.0 load_textdomain () फ़ंक्शन, load_plugin_textdomain () का उपयोग करता है, load_textdomain () वैसे भी बस एक आवरण है। BbPress 2.0 विधि अधिक मजबूत है और वैश्विक अनुवाद फ़ाइल प्लेसमेंट के लिए अनुमति देता है, इसलिए आप प्लगइन अपडेट के दौरान उन्हें खोना नहीं है।


-1

मेरे मामले में प्लगइन के लिए स्थायी कस्टम अनुवाद बनाने के लिए निम्नलिखित चरणों की आवश्यकता होती है (ACF प्लगइन अनुवाद के लिए उदाहरण):

  1. wp-content/languages/plugins/निर्देशिका बनाएँ
  2. नकल चयनित अनुवाद फ़ाइल .poप्लगइन से lang/फ़ोल्डर (या अनुवाद के साथ किसी भी अन्य) के लिए बनाया wp-content/languages/plugins/(से जैसे lang/acf-pl_PL.poकरने के लिए wp-content/languages/plugins/acf-pl_PL.po)
  3. .poफ़ाइलों को संपादित करने के लिए Poedit या किसी अन्य कार्यक्रम के साथ अनुवाद को अनुकूलित करें और फिर (जैसे ) .moमें जनरेट करें और सहेजेंwp-content/languages/plugins/wp-content/languages/plugins/acf-pl_PL.mo

इस तरह से प्लगइन अपडेट के बाद भी अनुवाद को संरक्षित रखा जाना चाहिए।

मुझे यकीन नहीं है कि यह रणनीति सभी प्लगइन्स के लिए काम करेगी लेकिन यह निश्चित रूप से कोशिश करने लायक है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.