我正在使用GWT i18n製作一個網絡應用程序。在這個應用程序中,我想設置一個自定義屬性文件來支持與主要語言的差異。例如,我有一個en_US
語言環境,但我也希望en_US_x_custom
支持一些重新定義的屬性字段(BCP 47的規範說我可以使用-x
標記來支持專用標記)。GWT:如何使用私人標籤的區域
讓我告訴我有什麼現在:
我有一個接口
public interface TestMsg extends Messages {
String value();
}
和幾個屬性文件:
TestMsg_en_US.properties
TestMsg_en_US_x_custom.properties
在app.gwt.xml
,我有這樣的線
<inherits name="com.google.gwt.i18n.I18N"/>
<inherits name="com.google.gwt.i18n.CldrLocales"/>
<extend-property name="locale" values="en_US"/>
<extend-property name="locale" values="en_US_x_custom"/>
然而,問題是,編譯失敗,以下消息:
[ERROR] Type com.google.gwt.i18n.client.impl.LocaleInfoImpl_en_US_X-custom could not be referenced because it previously failed to compile with errors:
Tracing compile failure path for type 'com.google.gwt.i18n.client.impl.LocaleInfoImpl_en_US_X-custom'
[ERROR] Errors in 'generated://74EF808C0035420F02374EADB97661B8/com/google/gwt/i18n/client/impl/LocaleInfoImpl_en_US_X-custom.java'
[ERROR] Line 10: Syntax error on token "-", < expected
[ERROR] Line 17: The method getLocaleQueryParam() of type LocaleInfoImpl_en_US_X must override or implement a supertype method
[ERROR] Line 10: The public type LocaleInfoImpl_en_US_X must be defined in its own file
[ERROR] Line 22: The method getDateTimeFormatInfo() of type LocaleInfoImpl_en_US_X must override or implement a supertype method
[ERROR] Line 10: Syntax error, insert "AdditionalBoundList1" to complete TypeParameter1
[ERROR] Line 27: The method getNumberConstants() of type LocaleInfoImpl_en_US_X must override or implement a supertype method
[ERROR] Line 12: The method getLocaleName() of type LocaleInfoImpl_en_US_X must override or implement a supertype method
[ERROR] Errors in 'com/google/gwt/i18n/client/LocaleInfo.java'
[ERROR] Line 37: Rebind result 'com.google.gwt.i18n.client.impl.LocaleInfoImpl_en_US_X-custom' could not be found
如何擺脫這個編譯錯誤的?我該如何解決這個問題?
它不應該是'<擴展屬性名稱=「locale」values =「en_US-x_custom」/>'(注意'en_US'後面的短劃線)以匹配屬性文件嗎?或者相反。無論哪種方式,三重檢查文件名與您在模塊文件中定義的語言環境相匹配。 –
我嘗試了兩種定義方法。隨着你告訴我的方式我有以下錯誤:[錯誤]第13行:無效的屬性值'en_US-x_custom' – Alexander
我看到 - 我只是想確保。那麼,在這種情況下,我打賭這是一個錯誤或GWT不支持的東西。您可以在GWT錯誤跟蹤器上報告它,除非有人在這裏找到解決方案。或者深入挖掘一下:看看生成的類,看看它爲什麼不編譯(有一個開關強制GWT編譯器離開臨時生成的類),參見'LocaleInfoGenerator'類來了解如何生成LocaleInfoImpl類。 –