Как получить доступ к значению «локали» (приложения интернационализации) на стороне сервера в GWT?
Вопрос
Хорошо, я разрабатываю приложение, поддерживающее интернационализацию.Я использую 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() метод, чтобы получить фактический код в виде строки.
Я не совсем понял, как вы храните информацию о локали на стороне сервера?Имейте в виду, что сервлеты являются общими для пользователей, вам необходимо прикрепить локальный файл к сеансу или передавать его при каждом вызове.