2011-08-26 53 views
0

我想为我的gwt应用程序进行自定义国际化。这是什么意思?想象一下,我的应用程序必须为男性和女性国际化。 (id =男士,id =女士)。 是有可能使两个不同的.properties文件像 MyAppMessages_men_en.properties MyAppMessages_women_en.properties如何使用gwt实现自定义国际化?

MyAppMessages_men_fr.properties MyAppMessages_men_fr.properties

等等

和我的应用主机页面会像这样访问例如http://blabla/MyAppHostPage.html?locale=en&id=men 和这必须加载男士英文版本。

谢谢。

回答

1

对于其他语言环境,如何使用虚构的区域设置标识符如en_US_Menen_US_Women等等? (请注意,您应该包括一个国家,只要你有一个区域的变体)

否则,我会建议使用抽象工厂的消息和切换的具体实施使用延迟上的不同属性的绑定(男人与女人):

interface MyAppMessagesFactory { MyAppMessages create(); } 

class MyAppMessagesFactory_Men implements MyAppMessagesFactory { 
    @Override 
    public MyAppMessages create() { return GWT.create(MyAppMessages_Men.class); } 
} 


class MyAppMessagesFactory_Women implements MyAppMessagesFactory { 
    @Override 
    public MyAppMessages create() { return GWT.create(MyAppMessages_Women.class); } 
} 

你会再有你的MyAppMessages_Men_en.properties和MyAppMessages_Women_en.properties。

+0

是的,我婉使用en_US_Men和en_US_Women,但如何将我的GWT应用程序了解一下,有用户en_US_Men当我访问这样的: HTTP://blabla/MyApp.html区域= EN_US&ID =男性 这样我要求我的应用程序使用语言环境en_US和id = Men,所以我想使用en_US_Men。使用locale = en_US_Men(作为一个参数传递)也不是问题。我需要做一些不同的比赛吗? – user358448

+0

如果你使用'locale = en_US_Men'你不应该没有别的东西要改变。否则,你必须为'locale'属性提供你自己的'property-provider'(它将读取两个查询字符串参数并将它们连接起来以形成属性值) –

+0

嗨,我试过了。我创建两个属性文件MyMessages_en_US_Women.properties和MyMessages_en_US_Men.properties 我在myApp.gwt.xml加入: <延伸-属性名=“区域设置”值=“en_US_Men” /> <延伸-属性名=“区域设置”值=“en_US_Women” /> ,当我击中了主机页面和区域= en_US_Men 我得到一个错误说“没有资源发现关键......” 如果我改变属性的文件的名称 MyMessages_enUSMen.properties 和 并使用locale = enUSMen(类似于Women),一切正常。 – user358448