Я хочу установить gwt-locale
, взяв пользовательский язык с помощью Spring LocaleContextHolder
.GWT Dynamic Locale
public static final String getCurrentLocale() {
return LocaleContextHolder.getLocale().getLanguage();
}
Я на самом деле войти в интерфейс в Spring MVC и внутреннюю панель в gwtp
. Тот же пользователь локали выбирает внешний интерфейс, прежде чем логин должен быть передан также gwt
.
К сожалению, я не вижу никаких gwt встроенных локальных сеттеров.
Мои X.gwt.xml
с локалью по умолчанию, как kh
является:
<inherits name="com.google.gwt.uibinder.UiBinder" />
<inherits name="com.google.gwt.inject.Inject" />
<inherits name="com.gwtplatform.mvp.Mvp" />
<inherits name="gwtquery.plugins.droppable.Droppable"/>
<source path="client" />
<source path="shared" />
<define-configuration-property name="gin.ginjector" is-multi-valued="false"/>
<set-configuration-property name="gin.ginjector" value="com.prayagupd.client.mvp.XGInjector"/>
<set-configuration-property name="UiBinder.useSafeHtmlTemplates" value="true" />
<extend-property name="locale" values="kh" />
<extend-property name="locale" values="en" />
<set-property name="locale" value="kh"/>
<set-property-fallback name="locale" value="kh"/>
<entry-point class="com.prayagupd.client.XEntryPoint"/>
Мои XEntryPoint.java
гласит:
public class XEntryPoint implements EntryPoint {
private final IUserServiceAsync rpc = GWT.create(IUserService.class);
@Override
public void onModuleLoad() {
//
rpc.getLocale(new AsyncCallback<String>() {
@Override
public void onSuccess(String locale) {
GWT.log("Locale From Spring : " + locale);
GWT.log("Locale From GWT : " + LocaleInfo.getCurrentLocale().getLocaleName());
//here i want to set locale to gwt
//something like GWTLocale.setLocale(locale);
}
@Override
public void onFailure(Throwable caught) {
GWT.log(caught.getMessage());
}
});
DelayedBindRegistry.bind(ginjector);
ginjector.getPlaceManager().revealCurrentPlace();
}
}
home.jsp для GWT-загрузка
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" >
<%@tag import="java.util.Calendar"%>
<%@ tag body-content="scriptless"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="spr" tagdir="/WEB-INF/tags"%>
<%@ attribute name="isgwt" required="true" type="java.lang.Boolean"%>
<!-- <!DOCTYPE html> -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="shortcut icon" type="image/png" href="/images/favicon.png" />
<script type="text/javascript" src="js/reload.captcha.js"></script>
<script type="text/javascript" src="js/date.picker.js"></script>
<link rel="stylesheet" href="/styles/innerstyle.css" type="text/css" />
<c:if test="${not isgwt}">
<link rel="stylesheet" href="/styles/mainstyler.css" type="text/css" />
<script type="text/javascript" src="js/modernizer.custom.js"></script>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery-ui-custom.min.js"></script>
<script src="js/jquery.thumbnailScroller.js"></script>
</c:if>
<c:if test="${isgwt}">
<meta name="gwt:property" content="locale=${locale}">
<script type="text/javascript" language="javascript" src="upd/upd.nocache.js"></script>
</c:if>
<script type="text/javascript">
$(window).load(function() {
$('#slider').nivoSlider();
});
</script>
<title><c:out value="${locale}"></c:out><spring:message code="page.header" /></title>
</head>
<body>
<c:choose>
<c:when test="${empty username}">
<div class="header_con">
<div class="header_in">
<spr:header />
<spr:login />
<div class="clear"></div>
</div>
<div class="main_con">
<jsp:doBody />
<spr:footer />
</div>
<div class="clear"></div>
</div>
</c:when>
<c:otherwise>
<div id="mainHolder">
<div id="wrapper">
<spr:headerInner />
<iframe src="javascript:''" id="__gwt_historyFrame" tabIndex='-1'
style="position: absolute; width: 0; height: 0; border: 0"></iframe>
<div>
<div id="gwt_holder">
<c:if test="${isgwt}">
<div id="loader" class="loader">
</div>
</c:if>
<div id="gwt"></div>
</div>
</div>
</div>
</div>
</c:otherwise>
</c:choose>
</body>
</html>
Добавление ?locale=en
или ?locale=kh
в GWT URL работает отлично, но хочу сказать GWT только один раз, что я хочу эту локаль программно и хотите работать всегда с этой локалью вперед.
Когда я смотрю на *.html
исходный код, я могу видеть вводил <meta>
тег с правильной locale
передается от SpringController
.
Ссылки
GWT dynamic internationalization, Колин Alworth
How i change the locale language of the application
Я добавил '<с: если тест = "$ {isgwt}"> ' в 'home.jsp' (обновленный 'home.jsp' выше) Пропускает параметр locale из' SpringController'. Но 'LocaleInfo.getCurrentLocale(). GetLocaleName()' всегда возвращает 'kh', даже если вы пропустите' locale = en' из 'SpringController'. ** Все, что отсутствует или неуместно ?? ** – prayagupd
У вас должно быть ' ', либо удалить строку, либо установить 'значение' в' kh, en'; но тогда '? locale = en' не должно было работать. Вы уверены, что '$ {locale}' из Spring верен? –
Я попытался удалить ' ' to ' '. True '? Locale = kh' не работает. Я обновил скриншот выше, чтобы доказать правильность 'locale', передаваемого из' SpringController'. [html-source-with-meta] (http://i.stack.imgur.com/wKlLD.png) GWT предупреждает меня 'com.google.gwt.core.ext.BadPropertyValueException: свойство 'locale' не может быть установлено к неожиданному значению «default» –
prayagupd