GWT SafeHtmlTemplate国际化

问题描述:

我正在国际化我的gwt应用程序,我有几个SafeHtmlTemplate,我正在使用,我不知道如何翻译。有没有一种方便的方式来翻译这些,同时仍然使用SafeHtmlTemplate方法?否则,我是否会像往常一样将星期几的名称传递给模板并使用Constants来翻译它们?GWT SafeHtmlTemplate国际化

@Template("<table>" + 
      "<tr><td>Sunday:</td>{6}</tr>" + 
      "<tr><td>Monday:</td>{0}</tr>" + 
      "<tr><td>Tuesday:</td>{1}</tr>" + 
      "<tr><td>Wednesday:</td>{2}</tr>" + 
      "<tr><td>Thursday:</td>{3}</tr>" + 
      "<tr><td>Friday:</td>{4}</tr>" + 
      "<tr><td>Saturday:</td>{5}</tr>" + 
      "</table>") 
    SafeHtml hoursHtml(SafeHtml mon, SafeHtml tue, SafeHtml wed, SafeHtml thu, SafeHtml fri, SafeHtml sat, SafeHtml sun); 

既然没有办法用一个模板,像你这样有UiBinder模板里面做的一个Constants对象,我会说你获得了翻译的字符串模板外,然后将它们作为参数将是方法下一个更容易的选择。

此外,它提到的时间,并再次全部通过用于建立SafeHtml对象的字符串必须在编译时已经确定的GWT的SafeHtml文档:

public interface SafeHtmlTemplates
促进编译时的标签界面绑定HTML模板以生成SafeHtml字符串。

public static SafeHtml fromSafeConstant(java.lang.String s)
返回一个由安全字符串构造的SafeHtml,即不会转义字符串。
重要提示:为使此方法能够遵守SafeHtml合同,此方法的所有用途必须满足以下约束条件:
1.参数表达式必须在编译时间的处完全确定。
2.参数的值必须以“内部HTML”上下文结束,并且不包含不完整的HTML标记。

使用Constants模板内部的SafeHtml模板可能会干扰此规则。有人可能会争辩说,所有常量都被内联,并且已经在编译时生成了代码的国际化排列,所以在模板内使用常量时应该相对容易地克服这些限制;但是再一次,谷歌可能已经以一种不允许两种机制安全混合的方式实施它,因此限制。

所以只需将翻译的字符串作为参数传递(可能)的方式。