Apostrophe doesn't get translated properly when placed in a resource bundle
Apostrophe doesn't get translated properly when placed in a resource bundle.
key = {0}'s brush is 开发者_如何学C{1} centimeters tall
(e.g. Sam's brush is 4 centimeters tall)
The apostrophe gets missed if I format the above key from a java.util.ResourceBundle
What could be the problem here?
You should escape the single quote as
key = {0}''s brush is {1} centimeters tall
I strongly belive that the problem is not the ressource bundle but the MessageFormater you use to print the message:
From MessageFormater java doc:
Within a String, '' (two single quotes ) represents a single quote. A QuotedString can contain arbitrary characters except single quotes; the surrounding single quotes are removed. An UnquotedString can contain arbitrary characters except single quotes and left curly brackets. Thus, a string that should result in the formatted message '{0}' can be written as '''{'0}'' or '''{0}'''.
So you need to write:
{0}''s brush is {1} centimeters tall
Adding to @Ralph's answer:
You will realize that this is a MessageFormat
thing when you have a text like
text1=It's too late
versus
text2={0}''s too late
text1
would probably not run through a MessageFormater (e.g. spring has different code paths if arguments are passed or not), whereas text2
would.
So if you used two single quotes in text1
, they may / will display as such. So you'll need to check if any arguments get formatted in or not and use one or two single quotes accordingly.
Look at the javadoc here
Within a String, "''" represents a single quote. A QuotedString can contain arbitrary characters except single quotes; the surrounding single quotes are removed. An UnquotedString can contain arbitrary characters except single quotes and left curly brackets. Thus, a string that should result in the formatted message "'{0}'" can be written as "'''{'0}''" or "'''{0}'''".
You need to double single quote i.e. {0}''s brush is {1} centimeters tall
If you are completely stuck, as I was (none of the above worked), you can replace the apostrophe sign with its Unicode: \u0027. Remember you are always allowed to use UTF symbol in your properties file.
Consider using Properties Editor plugin (for Eclipse)
http://propedit.sourceforge.jp/index_en.html
For everyone that has Android problems in the string.xml, use \'\' instead of single quote.
精彩评论