Apóstrofe no consigue traducido correctamente cuando se coloca en un paquete de recursos

StackOverflow https://stackoverflow.com/questions/4449639

  •  10-10-2019
  •  | 
  •  

Pregunta

apóstrofe no sean traducidas correctamente cuando se coloca en un paquete de recursos.

key = {0}'s brush is {1} centimeters tall

(e.g. Sam's brush is 4 centimeters tall)

El apóstrofe se perdió si puedo dar formato a la clave anterior de un java.util.ResourceBundle Cuál podría ser el problema aquí?

¿Fue útil?

Solución

Se debe escapar la comilla simple como

key = {0}''s brush is {1} centimeters tall

Otros consejos

Me creer firmemente que el problema no es el paquete ressource pero el MessageFormater utiliza para imprimir el mensaje:

De MessageFormater java doc :

dentro de una cadena, '' ( dos comillas simples ) representa una una frase. Una lata QuotedString contener caracteres arbitrarios, excepto comillas simples; la única que rodea cotizaciones se eliminan. un UnquotedString puede contener caracteres arbitrarios excepto comillas simples e izquierda rizado soportes. Por lo tanto, una cadena que debe como resultado el mensaje formateado '{0}' puede escribirse como '' '{' 0} '' o '' '{0}' ''.

Así que hay que escribir:

{0}''s brush is {1} centimeters tall

Mire la javadoc aquí

dentro de una cadena, " ''" representa una una frase. Una lata QuotedString contener caracteres arbitrarios, excepto comillas simples; la única que rodea cotizaciones se eliminan. un UnquotedString puede contener caracteres arbitrarios excepto comillas simples e izquierda rizado soportes. Por lo tanto, una cadena que debe como resultado el mensaje formateado " '{0}'" se puede escribir como " '' '{' 0} ''" o " '' '{0}' ''".

Es necesario duplicar comilla simple es decir, {0} '' s cepillo es {1} centímetros de altura

Adición a @ respuesta de Ralph: Se dará cuenta de que esto es una cosa MessageFormat cuando se tiene un texto como

text1=It's too late

frente

text2={0}''s too late

text1 probablemente no correr a través de un MessageFormater (por ejemplo resorte tiene diferentes rutas de código si se pasan argumentos o no), mientras que text2 haría. Así que si utilizó dos comillas simples en text1, pueden / se mostrará como tal. Por lo que tendrá que comprobar si los argumentos consiguen formateados o no y el uso de uno o dos comillas simples en consecuencia.

Si no está completamente atascado, ya que estaba (ninguna de las anteriores trabajado), puede reemplazar el signo apóstrofe con su Unicode: \ u0027. Recuerde que siempre se permite el uso de símbolos UTF en el archivo de propiedades.

Considere el uso de plug-in editor de propiedades (para Eclipse)

http://propedit.sourceforge.jp/index_en.html

Para todos los que tienen problemas de Android en el string.xml, use \ '\' en lugar de comilla simple.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top