2011-08-26 58 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