Вопрос

У меня есть метод обслуживания, который принимает объект CultureInfo в качестве параметра. Я хочу использовать его, чтобы получить правильные строки от ресурсов по указанному языку. Итак, у меня есть метод на службе, как:

public string GetTranslatedString(CultureInfo c)

И на клиенте я называю этот метод таким образом:

ServiceReference.GetTranslatedString(CultureInfo.CurrentUICulture);

Я также пробовал:

ServiceReference.GetTranslatedString((CultureInfo)CultureInfo.CurrentUICulture.Clone());

Но это дает неправильные результаты! Объект информации о культуре передается так, как если бы он описывал культуру ПК, где находится сервис, а не культура ПК, где находится клиент. Так что, если у клиента есть культура «NL», сервер по -прежнему получает культуру «en»! Почему? Я знаю, как решить эту проблему иначе, передавая LCID в службу вместо объекта, но я действительно хочу знать, почему описанный подход не работает.

Это было полезно?

Решение

Попробуйте это (всего 4 веселья):

CultureInfo ci = CultureInfo.CurrentUICulture;
string text = ServiceReference.GetTranslatedString(ci);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top