http://www.qianqin.de/qtranslate/
あなたが必要なものです...
編集 -コメントの後。最初に-downvotesトレントに貢献したすべての人に感謝します。(これは、頻繁にアクセスしない場合に発生することです:-))
now-スイッチを処理する関数はqtranslate-coreにあります。(多かれ少なかれ80行目から始まります-必要なバージョンによって異なります。)
NOT OOPコードを調べることはできず、他に何もすることはないので、合成に10分かかりました。つまり、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と思う)。
つまり、新しいdiv構造が(タブ付きで)最近導入されたという事実により、おそらくコンテキストメニューdivの下に言語メニューが表示されますが、それでも機能するはずです。(時間があれば、後でこれに戻ることを約束します)
もっと時間があれば(そしてここに新しいワードプレスのコードがあれば)、おそらくこれを新しい管理バーに統合するでしょうadd_action( 'admin_bar_menu', 'k99_add_language_menu_2', 1000 );
(私はすでにこれに戻ることをすでに約束しました)
2-wp-content(better ??)またはwp-includeの「languages」フォルダー内にリストされた言語ファイルがあるはずです。この点に関して-コードは概念の証明に過ぎません-そしてもちろん時間があれば、ここでやるのではなく、動的な方法でメニューを構築する必要があります。
3-configのWPLANGは空でなければなりません。言語が既に設定されている場合、新しいwpバージョンで動作するかどうかはわかりません。
4-これは、qtranslateコード(古いバージョンでも)で作成されたものに基づいて構築された、単純な合成された言い換えの概念実証です。 、専用のテキストドメインなどはありません。)。
EDIT II
今日は誰かがラッキーです!(フライト遅延 )
アプローチの「アイデア」を探していたので、もう1つの有名なものを紹介します。
プラグイン、または実際には他の非排他的な環境には収まりませんが、「ブラウザ」を処理する方法として別の方向性を与える可能性があります。
これは、1つのような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', '');
}
}
}
今、WPLANG定数の直前のwp-configで、コードを含める必要があります。
require_once(dirname(__FILE__).'/wp-langswitch.php');
define ('WPLANG', '');
さて、明らかに言語を保存するためにいくつかのクッキーをミックスに追加する方が良いでしょう。
編集III
私は後でこれに戻ることを約束しました-これは(contextual-help-menuの代わりに)adminバー内にどのように(非常に正しくない原始的な方法で)統合できるかです
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 );
この関数を古いコード(元のNON-OOP非プラグイン)に置き換える(または追加する)だけです。
私が言ったように、ローカルにadmin-barを備えた新しいワードプレスのインストールはありませんが、動作するはずです。
(そして再び、それはうまくいかないかもしれません...しかし、あなたが本当に望むならそれを修正できると確信しています-それがOOPではないと思ったとしても):-)
今走らなきゃ それが何らかの形で役立つことを願っています。
編集IV-編集メニューIIIを管理メニューバーの作業バージョンに変更(少なくとも私のwp 3.4で)
3.4のインストールが機能していなかったので-そして今戻ってきて-Edit IIIソリューションを編集しました-そしてそれは私のために働きます。
賛成票については、あまり気にすることはできませんでした。そして、私は「賞金」を必要としません(それらが何であれ..)それはあなたがおそらくqTranslateの作者にそれを与えるべき運動のためでした。:-)それはOOPではないという事実にもかかわらず-それは多くの分野で学ぶべきたくさんの素晴らしいプラグインです。このプラグインリリースの「いつ」を考慮すると、それは驚くべきことです。NON OOPコードを読めないほどの努力に値する-それがOOPでなくても-OOP。そして、たとえ正しくインデントされていなくても(良い神!)。
WPLANG
定数を再定義することもできます。多言語コンテンツのある2つのサイトで、多言語プラグインがUI変換のトリガーに失敗した場合、それを行っています。それがAJAX / JSONソリューションでなければならない場合、私はどのように支援するのか分からないでしょう。