Niedawno zacząłem wdrażać opcje językowe dla mojej witryny. Oto, jak to działa:Dynamiczne przełączanie języka PHP, JavaScript, jQuery UI
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;
Ładuje odpowiedni plik językowy u góry każdej strony w mojej witrynie. Jednak problemy zaczynają się pojawiać podczas korzystania z datepicker jQuery's UI. Znalazłem plik regionalnego ustawienia dla datepicker online i stworzyliśmy osobny plik dla niego:
///jquery.ui.datepicker-fr.js file
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']);
});
Zagadnienie to muszę dynamicznie ładować jquery.ui.datepicker-fr.js
gdy zmiana języka jest wykrywany, tak że moje przełączniki Datepicker na francuski. Zastanawiałem się nad utworzeniem funkcji PHP, którą wstawiłbym do swojego pliku <head>
, która mogłaby wywołać echo mojego pliku, ale problem polega na tym, że nie wszystkie moje strony są PHP i nie uważam tego za bardzo skuteczną metodę. Jakieś inne pomysły, jak to zrobić?
Dlaczego nie czytać pliku cookie w javascript, a następnie na podstawie tego pobrać prawidłowy plik lokalizacyjny? –
Myślę, że efektywną metodą może być wyodrębnianie informacji 'lang cookie' przez' datepicker.js' i ładowanie odpowiednio – progrrammer
Hmm, ładowanie ciasteczka byłoby opcją .. – Dimitri