2012-05-24 2 views
0

У меня есть сайт, который должен быть доступен пользователю на английском и шведском языках. Мой вопрос: как мне решить, какой язык (и, в свою очередь, какие номера и т. Д.) Будет отображаться для пользователя.Определение предпочтительного языка для пользователя

Интерфейс javax.servlet.ServletRequest определяет метод getLocale() и говорит, что он вернет языковой стандарт на основе заголовка Accept-language в HTTP-запросе. Но это означает, что если человек с немецким браузером посещает мой сайт, объект Locale будет немецкий. И поскольку мой сайт не поддерживает немецкий язык, языковой стандарт в запросе не будет соответствовать ни одному из моих языковых файлов.

Есть ли способ настроить это или мне нужно переопределить функциональность метода getLocale() для этого?

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

И, чтобы быть ясным, я хочу: если локаль, предоставленная браузером, поддерживается моим сайтом, то используйте его. В противном случае используйте по умолчанию для моего сайта (английский).

+0

«И понятно, что я хочу: Если локаль поставляется в браузере поддерживается мой сайт, то используйте, что один противном случае. , используйте значение по умолчанию для моего сайта (английский) ». Попробуйте выразить, что в коде «locale поставлен» как getLocale(). Возможно, вам понадобится какая-то коллекция поддерживаемых локалей, определенных где-то ... – esej

+0

Да, это правильно, мне может понадобиться коллекция. Но нужно ли мне расширять getLocale и является ли этот метод правильным для моего размещения? –

ответ

1

Метод getLocale() является правильным, но его не нужно расширять. Java нормальный internationalization support уже дает вам поведение, которое вы хотите, намного проще и чище.

Например, предположим, что вы предоставляете следующие языковые файлы:

  • MyStrings.properties
  • MyStrings_sv_SE.properties

Первый файл имеет свой текст на английском языке, а второй имеет свой шведский текст. Если локаль - Швеция, будет использоваться файл шведского языка; в противном случае будет использоваться файл без расширения языка.

Чтобы получить текст, вы могли бы сделать что-то вроде:

ResourceBundle strings = ResourceBundle.getBundle("MyStrings"); 
String hello = strings.getString("HELLO_USER"); 
+0

Удивительный. благодаря –

Смежные вопросы