Il supporto di localizzazione nei browser legacy è scadente. Inizialmente, ciò era dovuto a frasi nelle ECMAScript
specifiche della lingua che assomigliavano a questo:
Number.prototype.toLocaleString ()
Produce un valore stringa che rappresenta il valore del Numero formattato in base alle convenzioni della locale corrente dell'ambiente host. Questa funzione dipende dall'implementazione ed è consentita, ma non incoraggiata, per restituire la stessa cosa a String .
Ogni metodo di localizzazione definito nelle specifiche è definito "dipendente dall'implementazione", il che comporta molte incoerenze. In questo caso, Chrome Opera e Safari restituirebbero la stessa cosa di .toString()
. Firefox e IE restituiranno stringhe formattate in locale e IE include persino un separatore di migliaia (perfetto per le stringhe di valuta). Chrome è stato recentemente aggiornato per restituire una stringa separata da migliaia, sebbene senza decimali fissi.
Per ambienti moderni , le specifiche dell'API per l'internazionalizzazione di ECMAScript , un nuovo standard che integra le specifiche del linguaggio ECMAScript, forniscono un supporto molto migliore per il confronto delle stringhe, la formattazione dei numeri e la formattazione di data e ora; corregge anche le funzioni corrispondenti nelle specifiche della lingua. Un'introduzione può essere trovata qui . Le implementazioni sono disponibili in:
- Chrome 24
- Firefox 29
- Internet Explorer 11
- Opera 15
Esiste anche un'implementazione di compatibilità, Intl.js , che fornirà l'API in ambienti in cui non esiste già.
Determinare la lingua preferita dell'utente rimane un problema poiché non ci sono specifiche per ottenere la lingua corrente. Ogni browser implementa un metodo per ottenere una stringa di lingua, ma questa potrebbe essere basata sulla lingua del sistema operativo dell'utente o solo sulla lingua del browser:
// navigator.userLanguage for IE, navigator.language for others
var lang = navigator.language || navigator.userLanguage;
Una buona soluzione per questo è scaricare l'header Accept-Language dal server al client. Se formattato come JavaScript, può essere passato ai costruttori dell'API per l'internazionalizzazione, che sceglieranno automaticamente le impostazioni locali migliori (o supportate per prime).
In breve, devi dedicarti molto al lavoro o utilizzare un framework / libreria , perché non puoi fare affidamento sul browser per farlo per te.
Varie librerie e plugin per la localizzazione:
Sentiti libero di aggiungere / modificare.