6 votes

Passage dynamique de la langue PHP, Javascript, jQuery UI

Je viens de commencer à mettre en œuvre des options de langue pour mon site web. Voici comment cela fonctionne en gros :

if(isset($_GET['lang']))
{
    $langr= $_GET['lang'];
    $_SESSION['lang'] = $langr;
    setcookie('lang', $langr, time() + (3600 * 24 * 30));
}
elseif(isset($_SESSION['lang']))
{
    $langr = $_SESSION['lang'];
}
elseif(isset($_COOKIE['lang']))
{
    $langr = $_COOKIE['lang'];
}
else
{
    $langr = 'en';
}
switch ($langr) 
{
  case 'en':
  $lang_file = $_SERVER['DOCUMENT_ROOT']."/includes/lang/en.php";
     break;
  case 'fr':
  setlocale (LC_ALL, 'fr_FR.utf8','fra'); 
  $lang_file = $_SERVER['DOCUMENT_ROOT']."/includes/lang/fr.php";
     break;

  default:
  $lang_file = $_SERVER['DOCUMENT_ROOT']."/includes/lang/en.php";

}
include_once $lang_file;

Il charge le fichier de langue approprié en haut de chaque page de mon site web. Cependant, des problèmes sont apparus lors de l'utilisation du datepicker de l'interface utilisateur de jQuery. J'ai trouvé un fichier de paramètres régionaux pour le datepicker en ligne et j'ai créé un fichier séparé pour cela :

///fichier jquery.ui.datepicker-fr.js

jQuery(function($){
    $.datepicker.regional['fr'] = {
        closeText: 'Fermer',
        prevText: 'Précédent',
        nextText: 'Suivant',
        currentText: 'Aujourd\'hui',
        monthNames: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin',
            'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'],
        monthNamesShort: ['janv.', 'févr.', 'mars', 'avril', 'mai', 'juin',
            'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'],
        dayNames: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'],
        dayNamesShort: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'],
        dayNamesMin: ['D','L','M','M','J','V','S'],
        weekHeader: 'Sem.',
        dateFormat: 'dd/mm/yy',
        firstDay: 1,
        isRTL: false,
        showMonthAfterYear: false,
        yearSuffix: ''};
    $.datepicker.setDefaults($.datepicker.regional['fr']);
});

Le problème est que j'ai besoin de charger dynamiquement jquery.ui.datepicker-fr.js chaque fois qu'un changement de langue est détecté afin que mon datepicker passe en français. Ce que je pensais faire est de créer une fonction PHP que je mettrais dans mon qui écrirait mon fichier, mais le problème est que toutes mes pages web ne sont pas en PHP et je ne trouve pas cela méthode très efficace. Avez-vous d'autres idées sur la manière de faire cela ?

0voto

Dendromaniac Points 368

Version améliorée de la réponse de Moeed :


Vous devez mettre une vérification dans votre header.php qui ressemblera à ceci :

Cela sélectionnera dynamiquement datepicker-???.js??? est la valeur représentée par le cookie/session-cookie.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X