Apostrof nie jest poprawnie tłumaczony po umieszczeniu w paczce zasobów.
key = {0}'s brush is {1} centimeters tall
(e.g. Sam's brush is 4 centimeters tall)
Apostrof zostanie pominięty, jeśli sformatuję powyższy klucz z a. java.util.ResourceBundle
Jaki może być tutaj problem?
java
resourcebundle
user339108
źródło
źródło
Odpowiedzi:
Powinieneś opuścić pojedynczy cudzysłów jako
key = {0}''s brush is {1} centimeters tall
źródło
Jestem głęboko przekonany, że problem nie dotyczy pakietu zasobów, ale MessageFormater używanego do drukowania wiadomości:
Z dokumentu MessageFormater java :
Więc musisz napisać:
{0}''s brush is {1} centimeters tall
źródło
Spójrz na javadoc tutaj
źródło
Musisz podwoić pojedynczy cudzysłów, tj. Pędzel {0} ma {1} centymetrów wysokości
źródło
Dodając do odpowiedzi @ Ralph: Zrozumiesz, że tak jest
MessageFormat
, gdy masz taki teksttext1=It's too late
przeciw
text2={0}''s too late
text1
prawdopodobnie nie przejdzie przez MessageFormater (np. spring ma różne ścieżki kodu, jeśli argumenty są przekazywane lub nie), podczas gdytext2
tak. Więc jeśli użyłeś dwóch pojedynczych cudzysłowów wtext1
, mogą / będą wyświetlane jako takie. Musisz więc sprawdzić, czy jakiekolwiek argumenty zostały sformatowane, czy nie, i odpowiednio użyć jednego lub dwóch pojedynczych cudzysłowów.źródło
Jeśli całkowicie utkniesz, tak jak ja (żadne z powyższych nie działało), możesz zastąpić znak apostrofu jego Unicode: \ u0027. Pamiętaj, że zawsze możesz używać symbolu UTF w pliku właściwości.
źródło
Rozważ użycie wtyczki Properties Editor (dla Eclipse)
http://propedit.sourceforge.jp/index_en.html
źródło
Dla każdego, kto ma problemy z Androidem w string.xml, użyj \ '\' zamiast pojedynczego cudzysłowu.
źródło