Apostroph wird nicht richtig übersetzt, wenn es in einem Ressourcenpaket platziert wird
Lesezeit: 3 Minuten
Apostroph wird nicht richtig übersetzt, wenn es in einem Ressourcenpaket platziert wird.
key = {0}'s brush is {1} centimeters tall
(e.g. Sam's brush is 4 centimeters tall)
Der Apostroph wird übersehen, wenn ich den obigen Schlüssel von a formatiere java.util.ResourceBundle Was könnte hier das Problem sein?
+1 Ich bin selbst auf dieses Problem gestoßen und habe einen kleinen Blogbeitrag darüber geschrieben. Vielleicht kann es zusätzliche Informationen für Leute liefern, die auf dieses “Feature” stoßen: mscharhag.com/2013/10/…
– micha
4. Oktober 2013 um 17:30 Uhr
Sie sollten das einfache Anführungszeichen als maskieren
key = {0}''s brush is {1} centimeters tall
Gute Antwort. Dies hat mein Problem mit einfachen Anführungszeichen gelöst. Danke 🙂 +1
– Anisch B.
26. Mai 2020 um 5:57 Uhr
Dies hat auch mein Problem gelöst, nachdem ich über eine Stunde mit anderen Lösungen verbracht hatte
– Samith Kumarasingha
4. März 2021 um 9:48 Uhr
Das ist eines der Dinge, die ich niemandem bei der Arbeit erzählen werde, die ich gegoogelt habe. Vielen Dank.
– Ben Bynum
31. Mai 2021 um 17:17 Uhr
Ich bin fest davon überzeugt, dass das Problem nicht das Ressourcenpaket ist, sondern das MessageFormater Sie verwenden, um die Nachricht zu drucken:
Innerhalb einer Zeichenfolge, ” (zwei einfache Anführungszeichen ) steht für ein einfaches Anführungszeichen. Ein QuotedString kann beliebige Zeichen außer einfachen Anführungszeichen enthalten; die umgebenden einfachen Anführungszeichen werden entfernt. Ein UnquotedString kann beliebige Zeichen außer einfachen Anführungszeichen und linken geschweiften Klammern enthalten. Somit kann ein String, der zu der formatierten Nachricht ‘{0}’ führen soll, als ”'{‘0}” oder ”'{0}”’ geschrieben werden.
Sie müssen also schreiben:
{0}''s brush is {1} centimeters tall
Ergänzend zu @Ralphs Antwort: Sie werden feststellen, dass dies eine ist MessageFormat Sache, wenn Sie einen Text wie haben
text1=It's too late
gegen
text2={0}''s too late
text1 würde wahrscheinlich keinen MessageFormater durchlaufen (z. B. Spring hat unterschiedliche Codepfade, wenn Argumente übergeben werden oder nicht), wohingegen text2 möchten. Wenn Sie also zwei einfache Anführungszeichen in verwendet haben text1, sie können/werden als solche angezeigt. Sie müssen also prüfen, ob Argumente formatiert werden oder nicht, und entsprechend ein oder zwei einfache Anführungszeichen verwenden.
Innerhalb eines Strings steht “”” für ein einfaches Anführungszeichen. Ein QuotedString kann beliebige Zeichen außer einfachen Anführungszeichen enthalten; die umgebenden einfachen Anführungszeichen werden entfernt. Ein UnquotedString kann beliebige Zeichen außer einfachen Anführungszeichen und linken geschweiften Klammern enthalten. Somit kann eine Zeichenfolge, die zu der formatierten Nachricht “‘{0}'” führen soll, als “”'{‘0}”” oder “”'{0}”'” geschrieben werden.
Sie müssen einfache Anführungszeichen setzen, dh der Pinsel von {0} ist {1} Zentimeter hoch
Nestor Miljajew
Wenn Sie, wie ich, völlig festgefahren sind (keine der oben genannten Methoden hat funktioniert), können Sie das Apostroph-Zeichen durch seinen Unicode ersetzen: \u0027. Denken Sie daran, dass Sie immer das UTF-Symbol in Ihrer Eigenschaftendatei verwenden dürfen.
Donauseefahrer
Erwägen Sie die Verwendung des Eigenschaften-Editor-Plugins (für Eclipse)
+1 Ich bin selbst auf dieses Problem gestoßen und habe einen kleinen Blogbeitrag darüber geschrieben. Vielleicht kann es zusätzliche Informationen für Leute liefern, die auf dieses “Feature” stoßen: mscharhag.com/2013/10/…
– micha
4. Oktober 2013 um 17:30 Uhr