Я работаю над многоязычным приложением, которое должно иметь одинаковый формат NumberFormat и DateTimeFormat на всех языках (всего 4). Я считаю, что лучший способ достичь этого - установить эти форматы только один раз, а не каждый раз, когда я конвертирую значение в строку, поскольку это может быть забыто по некоторым значениям и приводит к ошибкам.Пользовательский NumberFormat для многоязычного приложения UWP
В Silverlight приложения, это было достижим следующим образом:
var cultureInfo = new CultureInfo(languageCode);
cultureInfo.NumberFormat.NumberGroupSeparator = " ";
cultureInfo.NumberFormat.NumberDecimalDigits = 2;
cultureInfo.NumberFormat.NumberDecimalSeparator = ",";
cultureInfo.DateTimeFormat.ShortDatePattern = "dd'/'MM'/'yyyy";
Thread.CurrentThread.CurrentUICulture = cultureInfo;
Thread.CurrentThread.CurrentCulture = cultureInfo;
CultureInfo.DefaultThreadCurrentUICulture = cultureInfo;
CultureInfo.DefaultThreadCurrentCulture = cultureInfo;
Поскольку Thread.CurrentThread.CurrentCulture
больше недоступен, я использую CultureInfo.CurrentCulture
вместо этого. К сожалению, пользовательская культураInfo не может быть установлена во всем приложении с помощью этого метода. Я установил культуру в методе OnLaunched
, поэтому я думаю, что он установлен на правильной нити.
Я знаю, что с WinRT приложения работают только в одной из культур, к которым у приложения есть ресурсы, но означает ли это, что мы больше не можем переопределять NumberFormat? Или есть лучший способ достичь желаемого результата?
Это еще один из ваших ответов, который представляет собой скопированную копию из описания Github. – Ian
Обновление с исходным кодом –