Impostazione dei formati in base alla lingua
Come impostare il formato di data, valuta, ecc. in base alla lingua scelta, per evitare noiosi script di traduzione.
Il comando setlocale permette di impostare i parametri di localizzazione che danno la possibilità di utilizzare date e valute in base alla lingua scelta.
Link al manuale
Il comando funziona in base al sistema operativo installato che interpreta in modo diverso il parametro category
Per rendere il comando utilizzabile sia su sistemi Windows che Linux ho cercato il maggior numero di stringhe riconoscibili da passare alla funzione come parametro category
Quindi ho creato un array delle lingue utilizzate da impiegare in fase di impostazione.
Questo è il codice di esempio che ho impiegato:
/*
associazione della lingua scelta con le stringhe di identificazione
di LOCALE (setlocale)
tutte le stringhe specificate sono ricavate dal riferimento
ISO 639 e dal sito Microsoft
vedi http://www.w3.org/WAI/ER/IG/ert/iso639.htm e
http://msdn.microsoft.com/library/default.asp
?url=/library/en-us/vclib/html/_crt_language_strings.asp
*/
$lan_locale = array('ita'=>array('it_IT','ita','italian'),
'spa'=>array('esp','spanish','es_ES','spa','esl'),
'eng'=>array('eng','en_EN','eng','english'),
'fra'=>array('fra','fre','fr','french'),
'deu'=>array('deu','de_DE','german'),
'por'=>array('por','pt','portuguese','ptg'),
'chi'=>array('chi','zho','zh','chinese','chinese-simplified','chs')
);
/*
LOCALE
Imposta il formato delle stringhe in base alla lingua scelta
*/
$lan = 'ita';
$loc_value = setlocale(LC_ALL, $lan_locale[$lan]);
// tenta i differenti nomi possibili per le impostazioni passate
setLocale(LC_ALL,$loc_value);