Reescreva Regra para Website Multilíngüe, Como o qTranslate?

Gostaria de escrever meu pequeno plugin para troca de idioma. Para isso, a primeira coisa seria obter as regras de reescrita em execução. Estive procurando a web por 2 horas, mas não consegui encontrar uma resposta a minha pergunta ainda.

Gostaria de tê-lo assim: http://www.mysite.com/de/post-title/ ou http://www.mysite.com/de/projects/project-title/

Então, basicamente, o que estou tentando fazer é manter o URL atual e todos os seus parâmetros, basta adicionar o trecho de idioma atualmente ativo entre o URL do site e o caminho. Aqui esta o meu codigo ate agora:

 function rewrite_rule_de(){ add_rewrite_tag('%lang%','([^&]+)'); add_rewrite_rule('^de/(.+?)/?$', 'index.php?p=$matches[1]&lang=de', 'bottom'); global $wp_rewrite; $wp_rewrite->flush_rules(); } add_action('init', 'rewrite_rule_de'); 

Solutions Collecting From Web of "Reescreva Regra para Website Multilíngüe, Como o qTranslate?"

Eu entendi agora, Depois de pesquisar muitos resources:

 function lang_support() { return array('en','fr'); // Add your support lang-code (1st place is a default) } function rewrite_lang(){ $langs = lang_support(); foreach($langs as $lang) { add_rewrite_endpoint($lang,EP_PERMALINK|EP_PAGES|EP_ROOT|EP_CATEGORIES); } } add_action('init','rewrite_lang'); function lang(){ global $wp_query; $langs = lang_support(); $lang_r = ""; foreach($langs as $lang) { if(isset($wp_query->query_vars[$lang])) { $lang_r = $lang; $_SESSION['lang'] = $lang_r; } } if(in_array($lang_r,$langs)) { return $lang_r; } else { return $langs[0]; } } function init_session(){session_start();} add_action('init','init_session',1); function lang_session() { // Redirect by JS if session is set $url_lang= basename($_SERVER['REQUEST_URI']); if(!in_array($url_lang,lang_support()) && isset($_SESSION['lang'])) { if(!is_404()) { wp_redirect(currentURL().$_SESSION['lang'],301); exit; } } } add_action('wp_head','lang_session'); function output_buffer() {ob_start();} add_action('init','output_buffer'); function currentURL() { $pageURL=(@$_SERVER["HTTPS"]=="on")?"https://":"http://"; if($_SERVER["SERVER_PORT"]!="80"){ $pageURL.=$_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; }else{ $pageURL.=$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; } return $pageURL; } 

Adicione este código em functions.php . Após o código adicionado vá para wp-admin/options-permalink.php e pressione Save Changes

Então, agora você pode verificar / usar o código lang em seu modelo como ..

< ?php echo lang();?>

ou if( lang() === "en" )

Exemplo de URL de trabalho com meu código de exemplo:

 http://domain.com/ < -- "en" http://domain.com/en/ <-- "en" http://domain.com/fr/ <-- "fr" http://domain.com/es/ <-- "en" (coz , "es" code not set) http://domain.com/mypage/ <-- "en" (work with "page") http://domain.com/mypage/fr/ <-- "fr" http://domain.com/mypage/es/ <-- "en" (coz , "es" code not set) http://domain.com/mypost/ <-- "en" (work with "post") http://domain.com/mypost/fr/ <-- "fr" http://domain.com/mypost/es/ <-- "en" (coz , "es" code not set) 

Melhor idéia / fixador de erros / erro encontrado + bug? https://gist.github.com/l2aelba/5244912