http://www.qianqin.de/qtranslate/
ihtiyacın olan şey ...
Düzenle I - yorumdan sonra. İlk olarak - torrent indirmeye katkıda bulunan herkese teşekkürler. (biri yeterince sık ziyaret etmediğinde olan budur: -))
now - Şalteri kullanan fonksiyon qtranslate çekirdeğindedir. (80. satırdan az ya da çok başlar - istediğiniz sürüme göre değişir.)
Bir NOT OOP koduna bakamadığınızdan ve şimdi yapacak başka bir şeyim olmadığı için - sentezlemem için 10 dakika sürdüm, parola tüm OOp olmayanları sizin için başka bir OOP olmayan kodla derledim.
(üzgünüm, - burada ilkel eski skool)
& & 'Kodunu yönetici olarak kullanmak istediğinizi farz edersem & &' sorusunu anladığımı farz edersek & & nbsp; kodun optimal olmadığını anladığınızı varsayarak & nbsp;
<?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.
?>
UYARILAR :
1 - Bu 10 dakikada inşa edildi. havaalanında iken yerel makinede. Bunu söylememin nedeni, burada sahip olduğum tek hazır wordpress kurulumunun oldukça eski olması. (2.9 sanırım).
Bu, muhtemelen yeni bir div yapısının yakın zamanda tanıtılmış olması (sekmeli) - bağlamsal yardım divinin altında dil menüsünün görüneceği anlamına gelir - ama yine de çalışması gerekir. (Zamanım olursa tekrar buna döneceğime söz veriyorum)
Daha fazla zamanım olsaydı (ve burada yeni bir wordpress kodu), bunu muhtemelen yeni admin-bar'a entegre ederdim add_action( 'admin_bar_menu', 'k99_add_language_menu_2', 1000 );
(zaten buna geri döneceğime söz verdim)
2 - wp-content (daha iyi ??) veya wp-include'taki “diller” klasörü içinde listelenen dil dosyalarına sahip olmalısınız. Bu noktaya ilişkin olarak - kod yalnızca bir kavram kanıtıdır - ve elbette eğer daha fazla zaman varsa, menü dinamik bir şekilde yapılmalı ve burada yapılmayacak şekilde yapılmalıdır.
3 - config içindeki WPLANG'iniz boş olmalıdır. Bir dil ayarlanmışsa, daha yeni wp sürümlerinde çalışacağından emin değilim.
4 - qtranslate kodunda (aynı zamanda eski versiyonda) görülen şeyin üzerine inşa edilmiş basit bir sentezlenmiş ve tasvir edilmiş bir kavram kanıtıdır - bu yüzden işlerin çoğu "hızlı" şekilde yapılır, mutlaka "doğru" şekilde değil (JS eklemek gibi) , özel metin etki alanı vb.
EDIT II
bugün birisi şanslı! (Uçuş erteleme )
Yaklaşımlar için "fikirler" aradığına göre, işte bir başka ünlü.
Bir eklentiye veya aslında başka hiçbir özel olmayan ortama sığmayacak, ancak "Tarayıcı öğelerini" nasıl kullanacağınız konusunda size başka bir yön verebilir.
Bu, birinin dili GET ile almasını sağlar: <a href="index.php?lang=de">German</a>
veya<a href="whatever.php?lang=ml">my Language</a>
Kullanmak için bir kod oluşturabilirsiniz (ha wp-langswitch.php diyelim)
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', '');
}
}
}
Şimdi, wp-config'de, WPLANG sabitinin hemen öncesinde, kodumuzu eklememiz gerekir.
require_once(dirname(__FILE__).'/wp-langswitch.php');
define ('WPLANG', '');
Şimdi - tabii ki dilleri saklamak için karışıma biraz çerez eklemek daha iyi olurdu.
EDIT III
Buna daha sonra geri döneceğime söz verdim - işte (çok doğru olmayan ve ilkel bir şekilde) yönetici çubuğuna (bağlamsal yardım menüsü yerine) nasıl entegre edilebileceği.
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 );
Sadece bu fonksiyonu değiştirin (veya ekleyin) eski koda (orijinal NON - OOP eklentisi yok).
Dediğim gibi, burada admin-bar özelliğine sahip yerel bir wordpress kurulumum yok - ancak çalışması gerekiyor.
(ve sonra tekrar, işe yaramayabilir ... ama gerçekten istersen onu düzeltebileceğinden eminim - hatta OOP olmadığını düşündüm) :-)
Şimdi koşmalıyım. Umarım bir şekilde yardımcı olur.
DÜZENLEME IV - yönetici menü çubuğu için çalışma düzenini III olarak değiştirdi (en azından benim 3.4)
3.4 çalışan bir kurulumum olmadığı için - ve şimdi geri döndüm ve yaptım - Edit III çözümünü düzenledim - ve bu benim için çalışıyor.
Olumlu oylar hakkında daha az umursayamazdım. Ve herhangi bir “ödül” e ihtiyacım yok (bunlar ne olursa olsun ..) Bu, sadece onu qTranslate'in yazarına vermeniz gereken alıştırmalar içindi. :-) OOP olmadığı gerçeğine rağmen - birçok alanda öğrenilecek çok şeyi olan geniş bir eklenti. Bu eklenti sürümünün "ne zaman" göz önüne alındığında bile şaşırtıcı. OOP olmayan bir NOP kodu okuma tarif edilemez bir çabaya değer - OOP olmasa bile -. Ve doğru girintili olmasa bile (iyi tanrı!).
WPLANG
karar verebilirseniz , sabitin yeniden tanımlanması bir seçenek olabilir. Bunu, çok dilli eklentinin kullanıcı arayüzü çevirisini tetikleyemediği, çok dilli içeriğe sahip iki sitede yapıyorum. Bir AJAX / JSON çözümü olması gerekiyorsa, nasıl yardım edeceğimi bilemem.