http://www.qianqin.de/qtranslate/
आपको क्या चाहिए ...
संपादित करें I - टिप्पणी के बाद। पहला - उन सभी के लिए धन्यवाद जिन्होंने नीचे धार में योगदान दिया। (यह तब होता है जब कोई अक्सर पर्याप्त यात्रा नहीं करता है: -))
अब - फ़ंक्शन जो स्विच को हैंडल करता है वह क्यूट्रांसलेट-कोर में है। (कम से कम 80 या उससे अधिक रेखा पर शुरू होता है - उस संस्करण पर निर्भर करता है जिसे आप चाहते हैं।)
चूँकि आप एक NOT OOP कोड में नहीं देख सकते हैं, और मैं अब कुछ और करने के लिए नहीं हूँ - मुझे संश्लेषित करने में 10 मिनट लगे, paraphrase संकलित करता है कि आपके लिए अभी तक एक और गैर-OOP कोड के साथ गैर-OOp।
(क्षमा करें, - यहाँ आदिम पुरानी खोपड़ी)
यह मानते हुए कि मैंने प्रश्न && समझ लिया है कि आप चाहते हैं कि कोड व्यवस्थापन और& के लिए हो और यह मानकर कि आपको पता चल जाएगा कि यदि आप चाहते हैं कि यह पोर्ट को सामने वाले हिस्से में कैसे पोर्ट करना है और आप यह समझते हुए कि कोड इष्टतम नहीं है:
<?php
/*
Plugin Name: k99 language switcher
Plugin URI: http://www.krembo99.com
Description: Admin Language switcher proof of concept only - do not use in production.
Version: 0.0.0.0.0.0.0.1
Author: Krembo99
Author URI: http://www.krembo99.com
*/
?>
<?php function k99_add_language_menu() {
// k99_load_ajax_display_functions();
?>
<div class="mgmb_help_setting">
<?php _e('Language:','your_text_domain'); ?>
<select name="mgmb_language_setting_help" id="mgmb_language_setting_help" onChange="mgmb_set_language_cookies(this.value);" >
<option value="en_US" <?php if($_COOKIE['k99_userLang']=="en_US"){echo "selected";} ?>><?php _e('English','your_text_domain');?></option>
<option value="de_DE" <?php if($_COOKIE['k99_userLang']=="de_DE"){echo "selected";} ?>><?php _e('German','your_text_domain');?></option>
<option value="zh_CN" <?php if($_COOKIE['k99_userLang']=="zh_CN"){echo "selected";} ?>><?php _e('Chinese','your_text_domain');?></option>
</select>
</div>
<?php
}
// Now we set that function up to execute when the help action is called
add_filter('contextual_help', 'k99_add_language_menu');
// I guess this is your mysterious "browser stuff"
function k99_language_change($lang){
global $locale;
// wp_cache_set( "language", $lang, 'options' );
if ( isset($_COOKIE['k99_userLang'])) {
$lang = $_COOKIE['k99_userLang'];
}
define( 'WPLANG', $lang );
if($locale!= $lang) {
$locale = $lang;
load_plugin_textdomain('your_text_domain', false, dirname( plugin_basename(__FILE__) ) . '/lang'); // sample use for plugins textdomain
load_plugin_textdomain('your_text_domain2', false, dirname( plugin_basename(__FILE__) ) . '/lang');
load_plugin_textdomain('your_text_domain3', false, dirname( plugin_basename(__FILE__) ) . '/lang');
}
return $locale;
}
add_filter('locale', 'k99_language_change',99);
////////// +++++++++++++++ START COOKIES CREATION +++++++++++++++//////////////////
// Javascript function set the language cookies
// access external
// @param lang - language code
// @return NULL
// or maybe this is the OP´s mysterious "browser stuff" ??
function mgmb_print_script() {
?>
<script type="text/javascript" >
function mgmb_set_language_cookies(lang){
var Then = new Date();
Then.setTime(Then.getTime() + 10000*60*60*1000 ); //set cookie expire to 10000 hours cookies (hour*minute*seconds*1000)
document.cookie = "k99_userLang="+lang+";expires="+ Then.toGMTString();
window.location.reload();
}
</script>
<?php
}
add_action('admin_print_scripts', 'mgmb_print_script'); // this is not the right way to do .. but no time now.
?>
टिप्पणियों :
1 - यह 10 मिनट में बनाया गया था। हवाई अड्डे पर स्थानीय मशीन पर। मेरे कहने का कारण यह है कि मेरे पास यहां उपलब्ध एकमात्र तैयार वर्डप्रेस इंस्टालेशन काफी पुराना है। (2.9 मुझे लगता है)।
इसका अर्थ है कि शायद भाषा मेनू UNDER को प्रासंगिक सहायता div दिखाई देगा, इस तथ्य के कारण कि हाल ही में एक नया div संरचना पेश किया गया था (टैब के साथ) - लेकिन फिर भी यह काम करना चाहिए। (यदि मेरे पास समय हो तो मैं इसे बाद में वापस लेने का वादा करता हूं)
अगर मेरे पास अधिक समय था (और यहां एक नया वर्डप्रेस कोड) तो मैं शायद इसे नए व्यवस्थापक-बार के साथ एकीकृत करूंगा add_action( 'admin_bar_menu', 'k99_add_language_menu_2', 1000 );
(मैंने पहले ही इस पर वापस आने का वादा किया है)
2 - आपके पास wp-content (बेहतर ??) या wp- शामिल में "भाषाओं" फ़ोल्डर के अंदर सूचीबद्ध भाषाओं की फाइलें होनी चाहिए। इस बिंदु के बारे में - कोड केवल अवधारणा का प्रमाण है - और निश्चित रूप से अगर किसी के पास अधिक समय है तो मेनू को गतिशील तरीके से बनाया जाना चाहिए और यहां ऐसा नहीं किया जाना चाहिए।
3 - विन्यास में आपका WPLANG खाली होना चाहिए। मुझे यकीन नहीं है कि यह नए wp संस्करणों पर काम करेगा अगर कोई भाषा पहले से सेट है।
4 - यह एक सरल संश्लेषित और अवधारणा का प्रमाण है जो कि क्यूट्रांसलेट कोड (पुराने संस्करण) में भी देखा गया था - इसलिए अधिकांश चीजों को "त्वरित" तरीके से किया जाता है, जरूरी नहीं कि "सही" तरीके से (जैसे जेएस को जोड़ना) , कोई समर्पित टेक्सटोमेन आदि ..)।
EDIT II
आज कोई भाग्यशाली है! (उड़ान में देरी )
चूंकि आप दृष्टिकोण के लिए "विचारों" की तलाश कर रहे थे, इसलिए यहां एक और प्रसिद्ध है।
यह एक प्लगइन, या वास्तव में किसी अन्य गैर-अनन्य वातावरण में फिट नहीं होगा, लेकिन यह आपको "ब्राउज़र ब्राउज़र" को संभालने के लिए एक और दिशा दे सकता है।
यह एक को GET की तरह भाषा प्राप्त करने की अनुमति देगा: <a href="index.php?lang=de">German</a>
या<a href="whatever.php?lang=ml">my Language</a>
उपयोग करने के लिए, आप एक कोड बना सकते हैं (इसे wp-langswitch.php कहते हैं)
session_start();
if ( isset( $_GET['lang'] ) ) {
$_SESSION['WPLANG'] = $_GET['lang'];
define ('WPLANG', $_SESSION[WPLANG]);
} else {
if(isset($_SESSION['WPLANG'])) {
define ('WPLANG', $_SESSION['WPLANG']);
$_GET['lang'] = $_SESSION['WPLANG'];
} else {
if ( isset( $_SERVER["HTTP_ACCEPT_LANGUAGE"] ) ) {
$languages = strtolower( $_SERVER["HTTP_ACCEPT_LANGUAGE"] );
$languages = explode( ",", $languages );
$_SESSION['WPLANG'] = $languages[0];
$_SESSION['WPLANG'] = str_replace("-", "_", $_SESSION['WPLANG']);
$_GET['lang'] = substr($_SESSION['WPLANG'],0,2);
define ('WPLANG', $_SESSION[WPLANG]);
} else {
define ('WPLANG', '');
}
}
}
अब, wp-config में, WPLANG स्थिरांक से ठीक पहले, हमें अपना कोड शामिल करना होगा।
require_once(dirname(__FILE__).'/wp-langswitch.php');
define ('WPLANG', '');
अब - जाहिर है कि भाषाओं को संग्रहीत करने के लिए कुछ कुकीज़ को मिश्रण में जोड़ना बेहतर होगा।
EDIT III
मैंने बाद में इसे वापस लाने का वादा किया - यहां बताया गया है कि (बहुत ही गैर-सही और आदिम तरीके से) इसे व्यवस्थापक-बार के अंदर एकीकृत किया जा सकता है (संदर्भ-सहायता-मेनू के बजाय)
function k99_add_language_menu_bar() {
global $wp_admin_bar, $wpdb;
if ( !is_super_admin() || !is_admin_bar_showing() )
return;
// I am sure you can find a way alone to construct array from reading folder . If not , comment and I will update again.
if($_COOKIE['k99_userLang']=="en_US"){$sel==$_COOKIE['k99_userLang'];}
if($_COOKIE['k99_userLang']=="de_DE"){$sel==$_COOKIE['k99_userLang'];}
if($_COOKIE['k99_userLang']=="zh_CN"){$sel==$_COOKIE['k99_userLang'];}
$k99_lang = '';
$k99_lang .= '<select name="mgmb_language_setting_help" id="mgmb_language_setting_help" onChange="mgmb_set_language_cookies(this.value);" >';
$k99_lang .= '<option value="en_US" >English</option>';
$k99_lang .= '<option value="de_DE" >German</option>';
$k99_lang .= '<option value="zh_CN" >Chinese</option></select>';
/* Add the main siteadmin menu item */
$wp_admin_bar->add_menu( array( 'id' => 'Language', 'title' => __( 'language', 'your_text_domain3' ), 'href' => FALSE ) );
$wp_admin_bar->add_menu( array( 'parent' => 'Language', 'title' => $k99_lang, 'href' => FALSE ) );
}
add_action( 'admin_bar_menu', 'k99_add_language_menu_bar', 999 );
बस इस फ़ंक्शन (या जोड़ें) को पुराने कोड (मूल एनओएन - ओओपी गैर-प्लगइन) से बदल दें।
जैसा मैंने कहा, मेरे पास स्थानीय पर एक नया वर्डप्रेस इंस्टॉलेशन नहीं है जो कि व्यवस्थापक-बार की सुविधा देता है - लेकिन यह काम करना चाहिए।
(और फिर फिर से, यह काम नहीं कर सकता है ... लेकिन मुझे यकीन है कि आप ठीक कर सकते हैं कि अगर आप वास्तव में चाहते हैं - तो भी सोचा कि यह ओओपी नहीं है :-)
अब चलेगा। आशा है कि यह किसी भी तरह से मदद करता है।
संपादित करें IV - व्यवस्थापक मेनू बार (कम से कम मेरे wp 3.4 पर) के लिए कार्य III में परिवर्तित संपादन क्रिया
चूंकि मेरे पास 3.4 का कोई काम नहीं था - और अब मैं लौट आया और मैं करता हूं - मैंने संपादित III समाधान संपादित किया है - और यह मेरे लिए काम करता है।
उतार-चढ़ाव के बारे में, मैं कम परवाह नहीं कर सकता था। और मुझे किसी भी "इनाम" की आवश्यकता नहीं है (जो कुछ भी हो सकता है ..) यह सिर्फ उस अभ्यास के लिए था जिसे आप shlould करते हैं शायद यह qTranslate के लेखक को दे। :-) इस तथ्य के बावजूद कि यह ओओपी नहीं है - यह बहुत सारे क्षेत्रों से सीखने के लिए बहुत से एक जीनियस प्लगइन है। इस प्लगइन रिलीज के "जब" पर विचार करना, यह और भी आश्चर्यजनक है। एक गैर OOP कोड को पढ़ने के अदम्य प्रयास के लायक है - भले ही यह नहीं है - OOP। और भले ही वह सही तरीके से इंडेंट (अच्छा भगवान!) नहीं है।
WPLANG
स्थिरांक को पुनर्परिभाषित करना एक विकल्प हो सकता है। मैं बहुभाषी सामग्री वाली दो साइटों पर कर रहा हूँ जहाँ बहुभाषी प्लगइन यूआई अनुवाद को ट्रिगर करने में विफल रहता है। अगर इसका AJAX / JSON समाधान होना है, तो मुझे नहीं पता कि कैसे मदद करनी है।