BrowserDetection.php

From Fxp Wiki

Jump to: navigation, search
Voici mon extension de détection de la langue du visiteur (le langage du navigateur client), me permettant de charger le menu de droite dans la langue correspondante (par défaut, anglais s'il n'existe pas la langue correspondante).


L'extension doit être déclarée dans LocalSettings.php, et des lignes doivent être ajoutées dans les fichiers templates/xhtml_slim.pt et includes/SkinPHPTal.php


Here is my language detection extension (to detect the language of client browser), to load the corresponding left menu file (default is english when there no file for the detected language)


The extension has to be declared in LocalSettings.php, and a few lines needs to be added in templates/xhtml_slim.pt and includes/SkinPHPTal.php


templates/xhtml_slim.pt

	<div class="portlet" id="p-logo">
	  <a style="background-image: url(${logopath});" href="${nav_urls/mainpage/href}" i18n:attributes="title string:mainpage"></a>
	</div>
 
    <div class="portlet" id="p-menu">
        <h5 >Menu</h5>
        <div class="pBody">
	     <ul id="t-menu" tal:src-include="string:menu${menulang}.txt">
         </ul>
        </div>
 
    </div>
	<div class="portlet" id="p-nav">
	  <h5 i18n:translate="string:navigation">Navigation</h5>


includes/SkinPHPTal.php

          $tpl->setRef( "logopath", $wgLogo );
	  $tpl->setRef( "lang", $wgLanguageCode );
 
          //Modified FXP detect browser language
          $tpl->setRef( "browserlang", $wgBrowserLanguageCode );
          //$wgBrowserLanguageCodeMenu="Fr";
          $tpl->setRef( "menulang", $wgBrowserLanguageCodeMenu );
 
	  $tpl->set( "dir", $wgLang->isRTL() ? "rtl" : "ltr" );
	  $tpl->set( "rtl", $wgLang->isRTL() );
	  $tpl->set( "langname", $wgLang->getLanguageName( $wgLanguageCode ) );

extension/BrowserDetection.php

 
<?php 
// DWD Modify -> Add: Set Language from Browser Language Settings.
// Taken from Dokuwiki tips
//Modified FXP
  /*
  #=============================================================================#
  # Function: detect_browser_language()                                         #
  #-----------------------------------------------------------------------------#
  # Purpose: This function detects the user browser language.                   #
  #   If no valid language is found then it returns the default content language#
  # that is set on the configuration file                                       #
  #                                                                             #
  # Arguments:                                                                  #
  # Optionals:                                                                  #
  # Result: returns a string with the content language.                         #
  #                                                                             #
  #=============================================================================#
  */
 
    global $wgLanguageCode, $wgBrowserLanguageCode, $wgBrowserLanguageCodeMenu;
 
    $wgBrowserLanguageCode = preg_replace('/(;q=\d+.\d+)/i', '', getenv('HTTP_ACCEPT_LANGUAGE'));
    $wgBrowserLanguageCode = strtolower(substr($wgBrowserLanguageCode,0, 2));
//$wgBrowserLanguageCodeMenu = $wgBrowserLanguageCode;
 
 switch ($wgBrowserLanguageCode){
    case 'fr' : $wgBrowserLanguageCodeMenu='Fr';
    break;
    case 'de' : $wgBrowserLanguageCodeMenu='De';
    break;
    case 'en' : $wgBrowserLanguageCodeMenu='En';
    break;
    default :
    $wgBrowserLanguageCodeMenu ="";
    $wgBrowserLanguageCode ="";
 }
 
 
?>
 
Personal tools