Localizamos el texto de la interfaz de usuario para una aplicación web que se ejecuta en Java 5 y tenemos un dilema sobre cómo emitimos mensajes que están definidos en archivos de propiedades, del tipo utilizado por java.util.Properties.¿Debo usar java.text.MessageFormat para mensajes localizados sin marcadores de posición?
Algunos mensajes incluyen un marcador de posición que se completará con java.text.MessageFormat. Por ejemplo:
search.summary = Your search for {0} found {1} items.
MessageFormat es molesto, ya que una sola cita es un carácter especial, a pesar de ser común en el texto Inglés. Usted tiene que escribir dos por una comilla simple literal:
warning.item = This item''s {0} is not valid.
Sin embargo, las tres cuartas partes de 1000 más o menos mensajes de la aplicación no incluyen un marcador de posición. Esto significa que podemos hacer salir directamente, evitando MessageFormat, y dejar las comillas simples solos:
help.url = The web page's URL
Pregunta: deberíamos usar MessageFormat para todos los mensajes, para la sintaxis coherente, o evitar MessageFormat en lo que podamos, por lo la mayoría de los mensajes no necesitan escaparse?
Existen claramente pros y contras en ambos sentidos.
Tenga en cuenta que la documentación de la API para MessageFormat reconoce el problema y sugiere una no-solución:
Las reglas para el uso de citas dentro mensaje modelos de formato lamentablemente han demostrado ser un tanto confuso. En particular, no siempre es obvio a los localizadores si las comillas simples deben doblarse o no. Asegúrese para informar a los localizadores sobre las reglas, y cuéntelas (por ejemplo, mediante el uso de comentarios en los archivos fuente fuente ) qué cadenas serán procesadas por MessageFormat.
¿Es posible utilizar la librería antes de simplemente dar formato a una cadena sin embargo? –
parece que este mecanismo está enterrado profundamente en el código. tal vez tengas más suerte: http://logback.qos.ch/download.html –
De hecho, así que supongo que buscaré una implementación alternativa. –