Ответ веб-сервисов на языке клиента - как? - PullRequest
0 голосов
/ 23 сентября 2011

Я занимаюсь разработкой веб-службы SOAP на Java с использованием метро. Я хочу доставить ответ на языке клиента. Моя идея вернуть все строковые поля переводит. Это не основная цель веб-службы, но необходимое удобство.

ResourceBundle - это класс Java, который обрабатывает загрузку правильного набора строк в соответствии с местоположением клиента. Этот класс лучший подход?

И реальный вопрос: в среде WS, как узнать местоположение клиента?

EDIT: Мне нравится идея @Volker, позвольте решить, какой язык будет использоваться.

Как отправить намерения в сервис?

  • Параметр заголовка?
  • Метод (тело) параметр?
  • Любой другой вариант?

Ответы [ 2 ]

2 голосов
/ 23 сентября 2011

Как правило, я бы сказал, если это возможно, пусть клиент явно скажет вам, какой язык он хочет, и предоставит его в соответствии со своими потребностями.

Это может быть дополнительный веб-метод "getSupportedLanguages", который доставляет списокиз enUS, deDE или любого другого, и ваши другие методы могут принять эти языки и дать правильный ответ.Или предоставьте все языковые версии и дайте клиенту разобраться.Но это может быть немного избыточным в сети в зависимости от количества поддерживаемых локалей ...

По моему мнению, WebServices должны "стоять самостоятельно", клиенты должны быть тонкими и не требовать большого количества информации для обработки.содержимое.Представьте себе клиента C #, который может не работать с вашими Ressources или чем-то еще.Или новый клиент без ресурсов, который не может работать с вашими данными ...

Кроме того, может быть иначе, чтобы действительно получить языковой стандарт клиентов - неанглоязычный человек может использовать английскую систему или может быть ванглийская страна, но хотел бы видеть данные на его родном языке.Но если вам действительно нужно это сделать, я ничего не знаю, чтобы это включить.

2 голосов
/ 23 сентября 2011

Является ли перевод основной целью вашего сервиса или это просто удобство для пользователя?

В последнем случае я бы решил проблему наоборот:

Возможно ли в вашем приложении каким-либо образом отправлять клиенту не зависящие от языка сообщения (например, service.fail или что-то в этом роде), а клиент переводит их из-за пакета локальных ресурсов? Это позволит независимым пользователям вашего сервиса трансформировать ваш ответ во что угодно, включая перевод с использованием ResourceBundle. На мой взгляд, работа клиентского интерфейса - показывать соответствующее сообщение, а не работу вашего сервиса.

Конечно, недостатком этого является то, что у вас больше не будет наборов ресурсов в одном месте.

Что касается другой стороны вашего вопроса: ResourceBundle - это путь, он был специально разработан для этой задачи.

Кроме того: я не знаю, каким образом веб-сервис может что-либо узнать о своих клиентах, кроме того, он напрямую перехватывает Http-запрос и читает его поля, в частности Accept-Language. Эти поля кодируют языки как en-US.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...