как получить информацию о локали в приложении GWT
В GWT я должен указать, какие языковые стандарты поддерживаются в моем приложении. Код компилируется в различные файлы, по одному для каждой локали (помимо других версий), но я должен давать своим клиентам только один URL. Этот URL-адрес должен быть страницей, которая должна отображаться в соответствии с языковым стандартом, предпочитаемым браузером. Я не хочу иметь HTTP-параметр для языкового стандарта, так как я хочу изменить языковой стандарт, предпочитаемый браузером. Как это можно закодировать в GWT?
Должен ли я попытаться сделать это с помощью правил перезаписи apache? Я украл его, но думаю, что не могу легко получить доступ к такому параметру в правиле перезаписи.
Большое спасибо, Джузеппе
Ответов (5)5
<inherits name="com.google.gwt.i18n.I18N"/>
<!-- Use browser-specified locale for i18n -->
<set-configuration-property name="locale.useragent" value="Y"/>
<!-- Specify locales your application support -->
<extend-property name="locale" values="en"/>
<extend-property name="locale" values="de_DE"/>
<extend-property name="locale" values="ru_RU"/>
Если я не читаю документацию неправильно, я не думаю, что вам нужно что-либо делать.
Сделав языковой стандарт свойством клиента, стандартный процесс запуска в gwt.js выбирает соответствующую локализованную версию приложения, обеспечивая простоту использования (это проще, чем может показаться!), Оптимизированную производительность и минимальный размер скрипта.
Как я это читал, если ваш модуль добавил к нему все варианты локали, это должно быть автоматически?
GWT имеет хорошую поддержку интернационализации. См. Эту ссылку . Команда i18nCreator может помочь вам настроить инфраструктуру интернационализации аналогично тому, как projectCreator и applicationCreator настраивают приложение GWT.
Если у вас есть статические строки (например, недопустимая запись!), Которые необходимо интернационализировать, вам не нужен дополнительный флаг для команды i18nCreator для создания файлов свойств и инфраструктуры.
Если у вас есть строки, которые должны принимать параметры (например, Hello {0}), вам необходимо передать флаг -createMessages команде i18nCreator для создания файлов свойств и инфраструктуры.
Теперь ваш модуль должен включить модуль i18n в ваш MyApplication.gwt.xml:
<inherits name="com.google.gwt.i18n.I18N"/>
Определите интерфейс Java в том же пакете, что и ваши файлы свойств, который расширяет константы или сообщения и определяет методы (имя соответствует записям свойств), которые все возвращают строку.
MyConstants.properties содержит:
errorMessage=Invalid Entry!
MyConstants.java содержит:
import com.google.gwt.i18n.client.Constants;
public interface myConstants extends Constants {
String errorMessage();
}
Теперь, чтобы получить доступ к этим интернационализированным строкам из вашего приложения:
public class MyApplication implements EntryPoint {
private static final MyConstants constants = (MyConstants)GWT.create(MyConstants.class);
public void onModuleLoad() {
final Label errorMessage = new Label(constants.errorMessage);
}
}
GWT реализует интерфейс автоматически.
Аналогичным образом можно получать сообщения.
Надеюсь, это поможет вам начать работу.
У меня была такая же проблема , как вы, но мне действительно нужно знать текущую локаль (я запрашивает второй сервер для передачи данных , что я хочу быть локализуемым) Я нашел этот класс:
com.google.gwt.i18n.client.LocaleInfo#getCurrentLocale()
. Это должно дать вам то, что GWT использует в настоящее время.