放置在資源包中時,撇號不會正確翻譯。放置在資源包中時,撇號無法正確翻譯
key = {0}'s brush is {1} centimeters tall
(e.g. Sam's brush is 4 centimeters tall)
如果我格式化從java.util.ResourceBundle
上述關鍵可能是什麼問題就在這裏撇號可能會錯過?
放置在資源包中時,撇號不會正確翻譯。放置在資源包中時,撇號無法正確翻譯
key = {0}'s brush is {1} centimeters tall
(e.g. Sam's brush is 4 centimeters tall)
如果我格式化從java.util.ResourceBundle
上述關鍵可能是什麼問題就在這裏撇號可能會錯過?
你應該逃避單引號
key = {0}''s brush is {1} centimeters tall
我強烈相信的,這個問題是不是的ressource束但MessageFormater您使用打印的郵件:
From MessageFormater java doc:
在一個字符串中,''(兩個單引號)代表一個 單引號。一個QuotedString可以包含 任意字符,除了 單引號;周圍的單個 報價被刪除。 UnquotedString 可以包含任意字符 ,除了單引號和左括號 括號。因此,如果字符串 導致格式化消息 '{0}'可以寫爲'''{'0}'' 或'''{0}'''。
所以你需要寫:
{0}''s brush is {1} centimeters tall
你需要加倍的單引號,即{0}「的刷{1}釐米高
在一個字符串中,「''」代表一個 單引號。一個QuotedString可以包含 任意字符,除了 單引號;周圍的單個 報價被刪除。 UnquotedString 可以包含任意字符 ,除了單引號和左括號 括號。因此,如果字符串應該爲 或「'''{0}'''」,則應將格式爲 的「{0}」格式的消息寫入爲「''''''''''」。
考慮使用屬性編輯器插件(適用於Eclipse)
對於每個人都已經在Android的string.xml問題,請使用\ '\',而不是單引號。
添加到@拉爾夫的回答是: 你會意識到,這是一個MessageFormat
的事情,當你有一個像
text1=It's too late
與
text2={0}''s too late
text1
可能不會通過MessageFormater運行文本(例如,如果參數被傳遞,spring將使用不同的代碼路徑),而text2
會。 因此,如果您在text1
中使用了兩個單引號,則它們可能會顯示。所以你需要檢查是否有參數被格式化,並相應地使用一個或兩個單引號。
如果你完全卡住了,像我一樣(以上都沒有工作),你可以使用Unicode代替撇號:\ u0027。請記住,您始終可以在屬性文件中使用UTF符號。
+1我自己遇到這個問題,並寫了一篇關於它的小博客文章。也許它可以爲運行此功能的用戶提供更多信息:http://www.mscharhag.com/2013/10/single-quote-escaping-in-java-resource.html – micha 2013-10-04 17:30:15