Quale cultura usare quando si formattano i numeri nel testo inglese (non localizzato)? [duplicare]

3

Un tipico pezzo di codice che stampa un numero sulla console è questo:

Console.WriteLine("The number is " + 1234.5 + ".");

Questo contiene testo in inglese e formatta il numero usando le impostazioni locali dell'utente corrente. Ciò può generare un output misto (qui, tedesco):

The number is 1234,5.

L'applicazione non è localizzata. Il testo visibile all'utente è l'inglese. In che modo viene tipicamente affrontato? È corretto formattare i numeri nelle impostazioni locali dell'utente o è meglio forzare CurrentCulture in inglese?

Questa domanda non riguarda come formattare un numero in modo specifico per la cultura. Si tratta di un testo inglese che include numeri localizzati.

    
posta boot4life 07.12.2016 - 14:52
fonte

1 risposta

10

Quindi, se ho capito bene, hai un'applicazione non localizzata, che ha un testo in inglese, ma numeri, date, ecc. vengono automaticamente formattati nella CurrentCulture della macchina su cui è in esecuzione il programma. Conducendo a stringhe di cultura mista.

Ovviamente la cosa migliore da fare è localizzare completamente la tua applicazione con i file resx, ecc. Ma presumo che sarebbe inutilmente fuori dal campo di applicazione nel tuo caso.

I numeri possono avere differenze abbastanza sottili, si potrebbe obiettare che non ci sono problemi o che potrebbe essere meglio mostrarli nella cultura degli utenti. Ma considera i tempi:

System.Globalization.CultureInfo.CurrentCulture = new System
    .Globalization.CultureInfo("fr-FR");
Console.WriteLine(DateTime.UtcNow.ToString("U"));
//mercredi 7 décembre 2016 14:20:18

DateTimes può generare nomi completi di mese e giorno nella lingua specificata. Presumibilmente vorresti che tutto il testo fosse in inglese? e quindi dovresti formattarlo e, per coerenza, tutti i numeri, le valute ecc. nella stessa cultura del testo.

Se lo stai utilizzando in tutta l'app, impostarlo una volta all'inizio sarebbe una buona idea

PS. Ovviamente l'unico inglese corretto è "en-GB"

L'ambito di CurrentCulture è per thread. Potresti voler controllare msdn quando decidi dove impostarlo

link

link

    
risposta data 07.12.2016 - 15:23
fonte

Leggi altre domande sui tag