2012-03-29 29 views
9

Esistono strumenti che compilano un file java .properties in una classe che posso utilizzare nell'applicazione Java EE (tomcat)? Simile ad Android, dove il plugin eclipse produce una classe statica R.strings.Java: localizzazione di stringhe statiche

Ho trovato questo articolo:

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

Ma dipende da GWT. Qualsiasi aiuto apprezzato.

+0

si può spiegare un po '. Intendi una classe contenente costanti (come enum) o solo un proprietario di una proprietà? – questzen

+0

Questo post sembra molto simile a quello che stai chiedendo: http://stackoverflow.com/questions/1578026/java-properties-files-as-strongly-typed-classes –

risposta

4

non ho mai sentito parlare di tale strumento. GWT ha una grande tecnica basata su binding differito ma non è la cosa che stai cercando. Tuttavia penso che sia possibile implementare un generatore di codice di base per tali compiti.

Ma la risposta alla tua domanda è: per quanto ne so non c'è.

+0

+1 per la generazione del codice utilizzando una piccola applicazione java, che puoi invocare automaticamente da un'attività ant che puoi aggiungere come costruttore invocato automaticamente in eclissi. – jabal

0

Che dire ResourceBundle?

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

Come per l'altra risposta recente a questa domanda, questo non risponde a questa domanda. Quello che hai descritto è come di solito è fatto. Ma in Android si ottiene una classe generata con tutte le risorse in fase di compilazione (R.id). Se la proprietà1 non è definita otterresti qui una runtimeexception. Se non è definito in Android, si otterrebbe un errore in fase di compilazione. – jontro

0

penso si potrebbe scrivere una grammatica molto semplice per i file di proprietà usando ANTLR in un costume un plugin Maven (o task Ant), che genera solo il sorgente Java prima della fase di compilazione.

0

ne dite di memorizzare le vostre proprietà in un file JSON. L'oggetto JSON memorizzato nel file deve essere associato a una classe Java, utilizzare il mapper Jackson per deserializzare. Con Jackson puoi far rispettare che tutti i campi devono essere non nulli per la deserializzazione. Puoi anche usare GSON e scrivere un deserializzatore personalizzato che esegue controlli severi come desideri. Esempio: puoi applicare non null insieme a non vuoto per le stringhe.

0

Compiler Assisted Localization (CAL10N) non è esattamente quello che hai chiesto, ma potrebbe essere di aiuto.

Anche se non genera classi Java da .properties, l'utilizzo delle enumerazioni come chiavi dei messaggi è ancora migliore delle stringhe, in quanto si ottiene un aiuto dal compilatore.

Dichiarare un enum, associarlo a .properties con annotazione e utilizzare i valori enum nelle ricerche messaggio. Non ho ancora provato, però. Vedi manual.

1

Per l'internazionalizzazione delle applicazioni ho implementato un Message Compiler, che crea i file del bundle di risorse e le definizioni di costante come enumerazioni Java o stringhe finali statiche per le chiavi da un singolo file di origine. Quindi le costanti possono essere utilizzate nel codice sorgente Java, che è un modo molto più sicuro rispetto all'utilizzo di stringhe semplici. In questo caso si ottiene anche un errore in fase di compilazione, quando si utilizza una costante chiave, che non esiste. Il compilatore di messaggi non può essere utilizzato solo per Java. Crea anche file di risorse e costanti per Objective-C o Swift e può essere esteso per altri ambienti di programmazione.

Problemi correlati