http://www.qianqin.de/qtranslate/
필요한 것입니다 ...
의견 후- 편집 . 첫 번째-downvotes 급류에 기여한 모든 분들께 감사드립니다. (이것은 자주 방문하지 않을 때 발생하는 일입니다 :-))
now-스위치를 처리하는 기능은 qtranslate-core입니다. (80 행 이하에서 시작합니다. 원하는 버전에 따라 다릅니다.)
NOT OOP 코드를 조사 할 수없고, 이제는 할 일이 없습니다. 합성하는 데 10 분이 걸렸습니다.
(죄송합니다-여기에 오래된 오래된 스쿨)
내가 질문을 이해했다고 가정하면 & & 당신이 관리자를위한 코드가되기를 원한다고 가정하면 & & 당신이 원한다면 & & 코드가 최적이 아니라는 것을 이해한다고 가정하면 코드를 프론트 엔드로 포팅하는 방법을 알 것이라고 가정합니다.
<?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 (더 나은 ??) 또는 wp-include의 "languages"폴더 내에 나열된 언어 파일이 있어야합니다. 이 점과 관련하여-코드는 개념에 대한 증거 일뿐입니다. 물론 시간이 더 많은 경우 메뉴는 동적 방식으로 작성되어야하며 여기서는 수행하지 않아야합니다.
3-구성의 WPLANG이 비어 있어야합니다. 언어가 이미 설정된 경우 최신 wp 버전에서 작동하는지 확실하지 않습니다.
4-qtranslate 코드 (이전 버전)에서 볼 수있는 것을 기반으로하는 단순하게 합성되고 변형 된 개념 증명입니다. 따라서 대부분의 작업은 반드시 "올바른"방법이 아니라 "빠른"방법으로 수행됩니다 (JS 추가 등). 전용 텍스트 도메인 등이 없습니다.).
편집 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', '');
이제 분명히 언어를 저장하기 위해 쿠키를 믹스에 추가하는 것이 좋습니다.
편집 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 );
이 기능을 기존 코드 (원래 NON-OOP 비 플러그인)로 바꾸거나 추가하십시오.
내가 말했듯이, 로컬에 admin-bar 기능을 갖춘 새로운 워드 프레스 설치가 없지만 작동해야합니다.
(그리고 다시, 그것은 작동하지 않을 수 있습니다 ...하지만 실제로 원한다면-OOP가 아니라고 생각하더라도 고칠 수 있다고 확신합니다) :-)
지금 실행해야합니다. 그것이 어떻게 든 도움이되기를 바랍니다.
편집 IV- 편집 III을 관리자 메뉴 표시 줄의 작업 버전으로 변경했습니다 (적어도 내 wp 3.4에서는)
3.4를 제대로 설치하지 않았기 때문에 돌아 왔고 이제는 Edit III 솔루션을 편집했습니다.
공감 자에 대해, 나는 덜 신경 쓰지 못했습니다. 그리고 나는 "보상"이 필요하지 않습니다 (그것들이 무엇이든간에 ..) 그것은 단지 당신이 qTranslate의 저자에게 줄 수있는 운동을 위해서였습니다. :-) OOP가 아니라는 사실에도 불구하고 많은 영역에서 배울 것이 많은 독창적 인 플러그인입니다. 이 플러그인 릴리즈의 "언제"를 고려하면 놀랍습니다. NOP가 아닌 경우에도 NON OOP 코드를 읽는 데있어 불가피한 노력의 가치 그리고 올바르게 들여 쓰기되지 않더라도 (좋은 신!).
WPLANG
상수를 재정의하는 것이 옵션 일 수 있습니다. 다국어 플러그인이 UI 번역을 트리거하지 못하는 다국어 콘텐츠가있는 두 사이트 에서이 작업을 수행하고 있습니다. 그것이 AJAX / JSON 솔루션이어야한다면, 나는 도울 수있는 방법을 모른다.