Domanda

Buongiorno

Scuse per la domanda del principiante. Sto appena iniziando con le impostazioni di internazionalizzazione di ASP.NET.

Informazioni sullo sfondo:

Ho un sito Web che visualizza un oggetto HTML < table > . In quell'oggetto HTML < table > , ho una colonna che mostra le date. Essendo il mio server negli Stati Uniti, queste date vengono visualizzate come MM / DD / YYYY . Molti dei miei utenti si collegano a questa pagina Web tramite Excel, tramite i dati - > Importa dati esterni - > Importa interfaccia query Web. I miei utenti, per la maggior parte, sono negli Stati Uniti, quindi tali date vengono visualizzate correttamente nelle loro schermate di Excel.

Ora devo far funzionare la pagina web per gli utenti del Regno Unito. Così com'è, stanno scaricando le date come MM / GG / AAAA , il che rende i loro fogli di calcolo inutilizzabili poiché le loro impostazioni regionali sono impostate su GG / MM / AAAA .

La mia domanda è:

Come posso fare in modo che il web server realizzi che la richiesta in arrivo ha un'impostazione di cultura en-GB ? Potrei progettare la mia piccola soluzione personalizzata, ma sono sicuro di non essere il primo programmatore a trovarlo. Come lo gestisce il professionista? Sto cercando una soluzione che sia relativamente semplice e veloce da mettere in piedi, ma non voglio solo mettere qualche pezzo di merda difettoso della mia logica per dimenticare che avrò paura tra 6 mesi.

Grazie mille in anticipo, -Alan.

È stato utile?

Soluzione

Un paio di punti:

  • La globalizzazione di < > L'elemento necessita anche dell'attributo culture = " auto " ;. L'attributo uiCulture influisce sul linguaggio utilizzato per recuperare le risorse. L'attributo cultura influisce sulla cultura utilizzata per formattare i numeri e le date.

  • Come indicato in questo articolo MSDN , non è una buona pratica fare affidamento esclusivamente sulle impostazioni del browser per determinare la cultura dell'interfaccia utente per una pagina. Gli utenti utilizzano spesso browser che non sono impostati sulle loro preferenze (ad esempio, in un Internet café). Dovresti fornire agli utenti un metodo per scegliere esplicitamente una lingua o lingua e cultura (nome CultureInfo) per la pagina.

Altri suggerimenti

Puoi consentire al browser di impostare automaticamente la tua cultura dell'interfaccia utente se lo desideri, aprendo web.config, in questo modo:

<configuration>
   <system.web>    
       <globalization uiCulture="auto" />
       ...

Quindi la cultura impostata dal browser verrà automaticamente impostata nella tua app. Ciò significa che quando si dispone dei valori di data / ora di visualizzazione del framework, questi verranno formattati in base alla cultura dell'interfaccia utente del thread corrente.

Questo aiuterà anche se stai usando valuta e / o testo localizzato (tuttavia devi fornire le risorse localizzate per ogni cultura che supporti).

Puoi anche accettare un parametro della stringa di query per sovrascrivere le impostazioni della cultura.

L'inizializzazione della cultura dovrebbe andare nel metodo Page.InitializeCulture.

protected override void InitializeCulture ( )
{
  Thread.CurrentThread.CurrentCulture
    = Thread.CurrentThread.CurrentUICulture
    = Request.QueryString [ "culture" ] != null ? new CultureInfo ( Request.QueryString [ "culture" ] ) : CultureInfo.InvariantCulture;
  //base.InitializeCulture ( );
}

Utilizzo: http://tempuri.org/page.aspx?culture=en -GB

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top