GWT 2.10项目Ui-Binder国际化配置无效,求排查错误
GWT 2.10国际化配置失效问题排查
核心错误点
1. UiBinder的ui:msg未正确关联Messages接口方法
当你在UiBinder中指定ui:baseMessagesInterface="com.lass.smsweb.client.SiMaSoMessages"时,<ui:msg>的description属性必须对应Messages接口中的方法名,而非自定义的ST1这类标识。
你的UiBinder代码中:
<b.html:Span><ui:msg description="ST1">Fehler</ui:msg></b.html:Span>
这里的description="ST1"没有对应的方法在SiMaSoMessages接口中,GWT无法完成映射。
2. Messages接口缺少对应UiBinder文本的方法
SiMaSoMessages接口仅定义了invalidSymbol方法,但你在UiBinder中使用的ST1等文本没有对应的方法声明。需要在接口中添加对应方法,示例如下:
package com.lass.smsweb.client; import com.google.gwt.i18n.client.Messages; public interface SiMaSoMessages extends Messages { @DefaultMessage("''{0}'' ist keine gültiges Symbol.") String invalidSymbol(String symbol); // 对应UiBinder中的ST1文本 @DefaultMessage("Fehler") String ST1(); // 对应其他ST2、ST3、ST4文本 @DefaultMessage("Perturbations") String ST2(); @DefaultMessage("Alarmes") String ST3(); @DefaultMessage("Maintenance") String ST4(); }
3. 属性文件的键需与Messages接口方法名完全匹配
法语属性文件SiMaSoMessages_fr.properties中的键必须和接口方法名一致,同时修正属性文件中的语法错误:
invalidSymbol = ''{0}'' n''est pas un numéro valide. ST1 = Erreur ST2 = Perturbations ST3 = Alarmes ST4 = Maintenance
4. 可选方案:无需接口方法时改用ui:key
如果不想为每个UiBinder文本添加接口方法,可以去掉ui:baseMessagesInterface,改用ui:key直接指定属性文件中的键:
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:b="urn:import:org.gwtbootstrap3.client.ui" xmlns:b.gwt="urn:import:org.gwtbootstrap3.client.ui.gwt" xmlns:b.html="urn:import:org.gwtbootstrap3.client.ui.html" xmlns:b3="urn:import:org.gwtbootstrap3.extras.toggleswitch.client.ui" > <b.html:Span><ui:msg key="ST1" description="ST1">Fehler</ui:msg></b.html:Span> </ui:UiBinder>
这种方式不需要在Messages接口中添加对应方法,但需确保属性文件中的键和ui:key完全一致。
内容的提问来源于stack exchange,提问作者RG01
相关产品推荐
相关产品推荐

