Definiujemy wszystkie nasze umiędzynarodowione stałe ciągi w jednym pliku właściwości LocalizableResource_xx.properties
(po jednym na język) znajdującym się w google.gwt.i18n.client
.Jak obsługiwać pojedyncze cudzysłowy w stałych internacjonalizacji?
W ten sposób możliwe jest, aby uzyskać dostęp do stałych w kodzie Javy poprzez interfejs stałych
Window.alert(myConstants.helloWorld());
jak ich używać wewnątrz UiBinder .ui.xml
<ui:attribute key="some.key" name="text" description="useful info" />
Takie podejście nie działa dobrze, jeśli ciąg zawiera pojedynczy cytat ('
). Wynika to z faktu, że kompilator GWT generuje plik java.text.ParseException: Unterminated single quote:
podczas przetwarzania plików .ui.xml
. Jeśli unikniemy cytatu, czyli podwoimy go (''
), kompilator przejdzie, ale łańcuchy dostępne przez stały interfejs zawierają zarówno pojedyncze cytaty (jak w You can''t do that
).
Zastępowanie pojedynczych cudzysłowów za pomocą kodowania utf-8 nie pomaga (taki sam wyjątek jak powyżej).
Czy można w jakiś sposób użyć tego samego pliku właściwości w szablonach UiBinder, jak również w kodzie Java, bez uruchamiania irytujących problemów z pojedynczym cudzysłowem?
Czy próbowali ucieczki to tak: \ "? –
(Tylko w celach informacyjnych: Javadoc dla ['java.util.Properties.load (Reader)'] (http://download.oracle.com/javase/6/docs/api/java/util/Properties.html# load (java.io.Reader)) mówi: "Escapes nie są konieczne dla pojedynczych i podwójnych cudzysłowów, jednak zgodnie z powyższą regułą, pojedyncze i podwójne cudzysłowy poprzedzone znakiem odwrotnego ukośnika nadal dają odpowiednio jeden i dwa cudzysłowy.") –
@ Paweł Dyda: Tak, próbowałem tego, ale wystąpił 'java.text.ParseException'. – z00bs