Diciamo che ho una data che posso rappresentare in un formato invariante di cultura (ISO 8601).Localizza le date su un browser?
Prenderò il 6 luglio 2009, 15:54 ora UTC a Parigi, alle 17:54 ora locale a Parigi osservando l'ora legale.
2009-07-06T15: 54: 12.000 + 02: 00
OK ... c'è qualche gemma nascosta di markup che dire al browser di convertire che stringa in una versione localizzata di vero?
La soluzione più vicina utilizza Javascript Date.prototype.toLocaleString(). Certamente fa un buon lavoro, ma può essere lento a scorrere su un sacco di date, e si basa su Javascript.
C'è qualche markup semantico HTML, CSS, XSLT o altrimenti che un browser riconoscerà e automaticamente renderà la stringa localizzata corretta?
Edit:
Il metodo Attualmente sto usando sta sostituendo il testo di un elemento HTML con una stringa localizzata:
Inizia con:
<span class="date">2009/07/06 15:54:12 GMT</span>
Utilizzando Javascript (con jQuery):
var dates = $("span.date", context);
// use for loop instead of .each() for speed
for(var i=0,len=dates.length; i < len; i++) {
// parse the date
var d = new Date(dates.eq(i).text());
// set the text to the localized string
dates.eq(i).text(d.toLocaleString());
}
Da un punto di vista pratico, rende il testo "lampeggiante" al nuovo valore quando viene eseguito Javascript, e non mi piace.
Da un punto di vista dei principi, non capisco perché dobbiamo fare questo: il browser dovrebbe essere in grado di localizzare cose standard come valuta, date, numeri, purché lo contrassegniamo come tale.
Un follow-up domanda: Perché i browser/il Web non hanno una funzione così semplice - prendere un elemento di dati standard e il formato in base alle impostazioni del client?
Non so che ci sia comunque per farlo usando i linguaggi di markup straight up. Sono abbastanza sicuro che avrai intenzione di usare qualche script. – Peter