2010-09-17 72 views
3

我們目前是i18n'g我們的平臺。平臺的代碼庫和構建在這個平臺上的產品是巨大的,並且有許多硬編碼的字符串(除了我們將標籤外化的UI之外)。gettext(gettext-commons)或堅持java i18n

我需要一些關於使用gettext或Java i18n的建議。我只對gettext的好處和理解有限制的理解。除了Java i18n已經提供的內容之外,gettext將提供什麼?

預先感謝您。

回答

4

對我來說,首要原因(從the Gettext Commons Tutorial)將是:

的I18n還支持複數的妥善處理:

System.out.println(i18n.trn("Copied file.", "Copied files.", 1)); 
// will print "Copied file." 

System.out.println(i18n.trn("Copied file.", "Copied files.", 4)); 
// will print "Copied files." 

這個例子是不是最好的。它應該說「支持在目標語言中正確處理複數」。這是因爲有些語言可能有多個複數形式(事實上,這種語言有很多)。另外,你將有一個後備語言(英語,我猜)集成到你的源代碼中,這是很好的(我相信最好顯示英文文本比鍵名更好)。

我有一個問題,但它可能是無效的:雖然Gettext Commons是根據Apache 2.0許可條款發佈的,但它需要在系統上安裝Gnu gettext,(如果我錯了,請糾正我)即GPL許可(如果您恰好運行Linux,則爲L-GPL許可)。如果我的假設是正確的,這意味着除非您的應用程序僅限於Linux,否則您將不得不開放源代碼。

+1

您需要GNU gettext才能開發,但不能運行它。這意味着你不需要開源你的應用程序。 – 2015-11-16 21:36:45