我已经为java,UI Binder提供了GWT的i18n功能,并尝试在java HTML文件中为i18n提供纯粹的,无托管的。
阅读“Declarative Layout with UiBinder”后,我实现了一些代码,但它没有用:
<html xmlns:ui="urn:ui:com.google.gwt.uibinder">
<ui:with field='i18n' type='//.exampleConstants'/>
<head>
<title>Title of none-hosted HTML file and i18n part: <ui:text from='{i18n.title}'/></title>
</head>
<body>
...
</body>
</html>
具有id的解决方案(在同一页面上描述:https://developers.google.com/web-toolkit/doc/latest/tutorial/i18n/)将由RootPanel提取,如:
RootPanel.get("appTitle").add(new Label(constants.stockWatcher()));
也没有用,因为我的HTML文件没有与Java捆绑在一起。
如何在HTML文件中执行i18n?
答案 0 :(得分:1)
嗯,你在这里有一个Catch-22:HTML文件无法知道在加载编译出Java代码的JavaScript之前要使用哪个文本,这是由页面,所以在它加载后。
您必须使用标准Java Web应用程序技术来实现HTML页面的国际化,例如:使其成为JSP,并从Accept-Languages
请求标头中检测首选语言。如果你这样做,那么生成适当的<meta name="gwt:property" content="locale=XX">
,这样GWT应用程序引导程序(.nocache.js
文件)也不必猜它,这可能导致GWT应用程序在不同的语言环境中运行HTML生成的那个。