Как получить доступ к значению «локали» (приложения интернационализации) на стороне сервера в GWT?

StackOverflow https://stackoverflow.com//questions/25009115

  •  20-12-2019
  •  | 
  •  

Вопрос

Хорошо, я разрабатываю приложение, поддерживающее интернационализацию.Я использую Static String Internationalization метод для моего приложения.

Давайте скажем, что мое приложение может иметь английскую и немецкую версию, поэтому -1 -й, я создал MyMessages.java в котором все тексты сообщений написаны на английском языке.Затем я создал MyMessages_ge что почти то же самое, что MyMessages.java за исключением того, что текст написан на немецком языке

-2-й, в MyProject.html у меня есть <meta http-equiv="content-type" content="text/html; charset=UTF-8"> чтобы убедиться, что он поддерживает все языки

-3-е, в MyProject.gwt.xml У меня есть <extend-property name="locale" values="ge"/>

Теперь я запускаю свое приложение в eclipse http://localhost:8888/MyProject.html?gwt.codesvr=127.0.0.1:9997&locale=ge И он показывает весь текст на немецком языке, как я и ожидал.

Однако мне нужно знать, что мое приложение на немецком языке. At Server Side.Это означает, что всякий раз, когда мой GWT Gui в немецкой версии, мой сервер узнает об этом. languageCode=1 если он на английском языке, сервер будет использовать язык по умолчанию. languageCode=0

Вот что я сделал.В HeaderPresenter.java

@Override
public void prepareFromRequest(PlaceRequest request){
    super.prepareFromRequest(request);
    String locale=request.getParameter("locale", "");
    setLanguage(locale); // servercall back here
}

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

@Override
public SetLanguageResult execute(SetLanguage action, ExecutionContext context)
        throws ActionException {
    String locale=action.getLocale();
    if("ge".equals(locale)){
        Data.languageType=1;
    }
    return null;
}

Тем не менее, не кажется, когда я перехожу на Order Page, URL будет http://localhost:8888/MyProject.html?gwt.codesvr=127.0.0.1:9997&locale=ge#!orderPage это не в форме http://localhost:8888/MyProject.html?gwt.codesvr=127.0.0.1:9997#!orderPage;locale=ge вот почему сервер не смог захватить locale ценить.

Мне кажется, я здесь что-то неправильно понял.Я очень сбиваю с толку.

Итак, как получить доступ к значению «локали» (приложения интернационализации) на стороне сервера в GWT?

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

Решение

В GWT SDK есть служебный класс для работы с информацией о локали.Нет необходимости самостоятельно анализировать параметры URL.Посмотри на LocaleInfo.getCurrentLocale() затем используйте getLocaleName() метод, чтобы получить фактический код в виде строки.

Я не совсем понял, как вы храните информацию о локали на стороне сервера?Имейте в виду, что сервлеты являются общими для пользователей, вам необходимо прикрепить локальный файл к сеансу или передавать его при каждом вызове.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top