Я не могу понять, как получить CultureInfo установленной системы на клиентской машине.Культура системы в приложении SIlverlight
Существует свойство CultureInfo.InstalledUICulture
, но в Silverlight оно недоступно.
С уважением Jonny
Я не могу понять, как получить CultureInfo установленной системы на клиентской машине.Культура системы в приложении SIlverlight
Существует свойство CultureInfo.InstalledUICulture
, но в Silverlight оно недоступно.
С уважением Jonny
Я считаю, чтоCulture.CurrentCulture будет на самом деле предоставить вам с культурой пользователя. Он может, однако, изменить или быть программно установленным с помощью свойства текущего потока Thread.CurrentCulture. Я не уверен , если Silverlight может получить доступ к настройкам культуры/языка пользовательской машины/операционной системы за пределами этого механизма.
Как вы отметили в комментарии, вы не можете доверять ему, так как он определенно изменится на всю жизнь приложения. Возможно, тогда вы должны записать текущую культуру, когда приложение сначала запускается до того, как оно будет программно изменено, и сохраните его на неопределенный срок (статически или иначе), на который будет ссылаться ваш код.
EDIT: Еще одна возможность - использовать браузер хостинга и его JavaScript. Подойдя к нему, я вижу, что вы можете получить доступ к window.navigator.language, который будет сообщать о языке браузера. Internet Explorer любит делать что-то свое и сообщает browserLanguage, userLanguage и systemLanguage.
Вы можете написать небольшую метод JavaScript на странице (вы хотите сделать больше тестов кросс-браузер, версия тесты и системные тесты):
function GetUserLanguage()
{
if (window.navigator.language)
return window.navigator.language;
else //yay IE
return clientInformation.browserLanguage;
}
Затем в Silverlight вы могли иметь что-то как:
string userLanguage = (string)HtmlPage.Window.Invoke("GetUserLanguage");
CultureInfo userCulture = new CultureInfo(userLanguage);
Я не уверен, если все культуры сообщили в браузере (во всех браузерах/версий/операционных систем) будет соответствовать листинг культуры в Silverlight.
Эй, еще раз спасибо за подробный ответ. В качестве небольшого обходного пути теперь я использую CurrentCulture и сохраняю его в своих настройках приложения в начале приложения. На данный момент у меня нет другого выбора, чем предположить, что это текущий системный язык. –
__ReferenceError: окна не определены__ правильно - ** window.navigator.language ** –
@AlexSkiffin: Спасибо, что выбрали эту опечатку; Я исправил это сейчас. –
Не было [Culture.CurrentCulture] (http://msdn.microsoft.com/en-CA/library/system.globalization.cultureinfo.currentculture%28v=vs.95%29.aspx) быть тем, вы ищете? EDIT: Имейте в виду, что это культура для текущего потока (который может быть программно изменен), но я _think_ по умолчанию настроен на культуру пользовательской машины/операционной системы. –
Эй, CurrentCulture будет определенно изменен во время применения. Поэтому я не могу доверять этой ценности. Извините, что я не упоминал об этом в своем оригинальном посте. –
Нет других предложений? –