2014-04-08 79 views
2

我在模塊XML文件中定義以下區域:如何合併來自不同語言環境的GWT排列?

<extend-property name="locale" values="en, en_US, en_GB"/> 
<extend-property name="locale" values="de, de_DE" />  

我怎樣才能得到只有一個連接,EN_US,EN_GB置換和德,de_DE這個一個置換?

回答

0

刪除特定國家的版本,如果你不爲他們提供的選項給用戶:

<extend-property name="locale" values="en"/> 
<extend-property name="locale" values="de" /> 

要設置默認的語言環境:

<set-property-fallback name="locale" value="en"/> 
+0

並創建翻譯en_whatever到en的屬性提供者,de_whatever去de –

+2

@Maciej - 如果已經存在'_en'和'_de'屬性文件,則不需要這樣做。 –

+0

我不知道,謝謝! –

6

GWT的方式合併排列不同的財產價值被稱爲SoftPermutations

<collapse-property name="locale" values="en, en_US, en_GB" /> 
<collapse-property name="locale" values="de, de_DE" /> 

EDITED

關於使用所有區域而不是選擇每種語言的好處,您可以充分利用所有這些語言差異,這對用戶來說非常重要。

想那GWT包括國際化數字,日期,複數等完整的國際化堆棧(基於CLDR),它是不顯示的'en' date-picker VS的'en_GB' datepicker由於歐洲人使用週一周的第一天,而不是相同週日。

由於大多數屬性都在類似語言之間共享,所以在最終置換中javascript的增量並不重要(很少有KB),因爲只有那些細微的差異必須包括在內。

當然,您只需爲支持的語言翻譯一次您的應用程序,例如您將所有應用程序消息寫入'en',因爲當找不到消息時'en_GB'會回退到'en',但您仍然如果需要,可以選擇更改某些消息。

很多人用GWT中的語言環境做的事情就是將它們全部摺疊起來,以避免排列爆炸<collapse-property name="locale" values="*" />並提高編譯時間。您可以選擇在交付通常每個交付週期發生一次的生產應用程序時放棄該行,並且可以讓CI服務器編譯所有排列。

+1

指定三個語言環境並告訴編譯器將它們合併爲一個,而不是隻指定一個您需要的語言環境,有什麼好處? –

+0

好問題。是的有什麼好處? – confile

+2

將一個語言環境置於一個排列中,該應用程序只能用於一種語言。在一個排列中有三個語言環境,該應用程序可以用於這三種語言中的任何一種,但僅排放一個排列。這使得編譯時間更短,但用戶下載的總量更大。如果你只需要一個語言環境,那麼當然摺疊其他無用(對你)語言環境將是愚蠢的,但如果你需要所有這些,跳過其他語言環境將限制誰可以使用你的應用程序。 –