2012-03-29 14 views
9

¿Hay alguna herramienta que compile un archivo java .properties en una clase que pueda usar en la aplicación Java EE (tomcat)? Similar a android donde el plugin Eclipse produce una clase estática R.strings.Java: localización de cadena estática

me encontré con este artículo:

http://www.techhui.com/profiles/blogs/localization-in-gwt-using

pero es dependiente de GWT. Cualquier ayuda apreciada.

+0

¿Puede explicar un poco. ¿Te refieres a una clase que contiene constantes (como enum) o solo un titular de propiedad? – questzen

+0

Esta publicación parece bastante similar a lo que está preguntando: http://stackoverflow.com/questions/1578026/java-properties-files-as-strongly-typed-classes –

Respuesta

4

Nunca escuché acerca de dicha herramienta. GWT tiene una gran técnica basada en el enlace diferido, pero no es lo que estás buscando. Sin embargo, creo que es posible implementar un generador de código básico para tales tareas.

Pero la respuesta a su pregunta es: por lo que yo sé, no lo es.

+0

+1 para generación de código usando una pequeña aplicación Java, que puede invocar automáticamente desde una tarea ant que puede agregar como un generador invocado automáticamente en eclipse. – jabal

0

¿Qué pasa con ResourceBundle?

// refers to "src/config.properties" 
ResourceBundle config = ResourceBundle.getBundle("config"); 
String property1 = config.getString("property1"); 
+1

Al igual que con la otra respuesta reciente a esta pregunta, esto no responde a esta pregunta. Lo que describes es cómo se hace generalmente. Pero en Android obtienes una clase generada con todos los recursos en tiempo de compilación (R.id). Si la propiedad1 no está definida, obtendría una excepción de tiempo de ejecución aquí. Si no está definido en Android, obtendría un error de tiempo de compilación. – jontro

0

creo que se podría escribir una gramática muy simple de archivos de propiedades utilizando antlr en una costumbre un plugin Maven (o tarea Ant) que simplemente genera la fuente de Java antes de que el paso de compilación.

0

Qué tal almacenar sus propiedades en un archivo JSON. El objeto JSON almacenado en el archivo debe correlacionarse con una clase Java, use el mapeador Jackson para deserializar. Con Jackson puede hacer cumplir que todos los campos deben ser no nulos en deserializar. También puede usar GSON y escribir un deserializador personalizado que realice comprobaciones tan estrictas como desee. Ejemplo: puede aplicar no nulo junto con cadenas no vacías.

0

Compiler Assisted Localization (CAL10N) no es exactamente lo que pediste, pero puede ser de ayuda.

Aunque no genera clases Java desde .properties, el uso de enumeraciones como claves de mensaje es mejor que las cadenas, ya que obtiene ayuda del compilador.

Declare a enum, conéctelo a .properties con anotación y use los valores enum en las búsquedas de mensajes. No lo he probado todavía, sin embargo. Ver manual.

1

Para internacionalizar aplicaciones implementé un archivo Message Compiler, que crea los archivos del paquete de recursos y las definiciones constantes como enums de Java o cadenas finales estáticas para las claves de un único archivo fuente. Por lo tanto, las constantes se pueden usar en el código fuente de Java, que es una forma mucho más segura que usar strings simples. En este caso también obtienes un error de tiempo de compilación, cuando usas una constante de clave, eso no existe. El compilador de mensajes no solo se puede usar para Java. Crea también archivos de recursos y constantes para Objective-C o Swift y puede ampliarse para otros entornos de programación.