gpt4 book ai didi

GWT 动态语言环境

转载 作者:行者123 更新时间:2023-12-02 07:03:35 24 4
gpt4 key购买 nike

我想设置gwt-locale在 Spring 的帮助下获取用户选择的语言环境 LocaleContextHolder .

public static final String getCurrentLocale() {
return LocaleContextHolder.getLocale().getLanguage();
}

我实际上在 Spring MVC 中有登录界面,在 gwtp 中有内部仪表板.在必须将登录传递给 gwt 之前,在外部界面中选择相同区域设置的用户

不幸的是,我没有看到任何 gwt 内置的 Locale setter 。

我的 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();
}
}

用于 gwt 加载的 home.jsp

<!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源代码,我可以看到注入(inject)了<meta>用适当的标签 localeSpringController 传递.

enter image description here

引用资料

GWT dynamic internationalization , 科林·奥尔沃思

How i change the locale language of the application

最佳答案

使用 dynamic host page你在哪里注入(inject)正确的<meta name="gwt:property" content="locale=XXX"> .

记住 GWT bootstrap sequence : 一旦你的 onModuleLoad已被调用,排列(包括语言环境)的选择已经做出。您必须更改引导序列,以便它为用户选择正确的排列。 ?locale=XXX这样做(因为 locale 属性有一个 <property-provider> 读取 locale 查询字符串参数等),以及 <meta>以上。

另见 https://code.google.com/p/google-web-toolkit-incubator/wiki/ServerSideLocaleSelection一些想法(注意:已弃用的项目!)

最后,您的 *.gwt.xml 存在一些问题, 从 kh 开始不是 valid locale .

将您的应用程序国际化的工作流程如下:

  1. 列出您的语言环境:

    <extend-property name="locale" value="en" />
    <extend-property name="locale" value="fr" />
  2. 删除 default通过设置 locale 的语言环境属性到受支持语言环境的完整列表:

    <set-property name="locale" value="en,fr" />
  3. 设置后备语言环境:

    <set-property-fallback name="locale" value="en" />

您可以选择如何使用属性 locale.queryparam 来确定语言环境。 , locale.cookie , locale.usemeta , locale.useragent , 和 locale.searchorder (请参阅 I18N.gwt.xml 了解它们的默认值和可接受值)。

最后,添加代码以选择语言环境(例如上面的动态 <meta>)

关于GWT 动态语言环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16293796/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com