Domanda

Nel mio progetto java, ho un sacco di stringhe esternalizzate in un file messages.properties . Sul suo rispettivo file Messages.java avevo lo stesso numero di attributi pubblici String tipizzati statici, in modo da poter accedere a quei testi esternalizzati.

Quindi, ho implementato un metodo chiamato getString , che riceve il nome della costante come argomento e restituisce il testo desiderato. In questo modo, non è necessario dichiarare tutti gli attributi di stringhe statici pubblici all'interno del file Messages.java .

Ma dopo aver fatto questo il mio registro è stato riempito con " messaggio NLS inutilizzato " messaggi.

Sai se esiste un modo per impedire la registrazione di quei messaggi di avviso?

Grazie in anticipo.

È stato utile?

Soluzione

I messaggi sembrano una classe che hai scritto, perché non lo vedo nel mio javadocs JDK 6.

Sembra che tu abbia provato a reinventare java.util.ResourceBundle. Consiglierei di usarlo invece e di abbandonare la tua classe. Avrà l'ulteriore vantaggio di gestire correttamente I18N.

Non vedo alcun valore nel codificare le chiavi dei messaggi statici pubblici nella classe. È solo un'altra cosa che dovrai mantenere. Se capisco cosa stai facendo correttamente, butterei via i tuoi Messaggi e utilizzerei invece ResourceBundle.

Altri suggerimenti

La tua classe Messaggi - sembra che estenda org.eclipse.osgi.util.NLS .

In tal caso, è progettato per soddisfare i requisiti:

  • per fornire il tempo di compilazione per verificare l'esistenza di un messaggio.
  • per evitare l'utilizzo della memoria di una mappa che contiene sia chiavi che valori (questo sarebbe il caso di un approccio di raggruppamento di risorse).
  • buon supporto i18n.

vale a dire. NLS popola il valore di Message.staticVariable con il valore di staticVariable trovato in messages.properties.

La registrazione degli avvisi fornisce informazioni su una mancata corrispondenza tra il file Messages.java e il message.properties .

Il tuo metodo getString () sembra che non utilizzi nessuno dei vantaggi di NLS, quindi come altri hanno suggerito, potresti essere meglio usando un ResourceBundle.

duffymo , come jamesh ha detto, Messaggi è una classe che ho scritto e estende org.eclipse.osgi.util.NLS . Ha un attributo statico privato e il suo tipo è ... ResourceBundle!

jamesh , grazie per aver spiegato in dettaglio come funziona NLS.

In base alle tue risposte ho rimosso la mia classe Messaggi dal mio progetto e ho aggiunto un attributo tipizzato ResourceBundle alle classi che devono utilizzare le stringhe esternalizzate. Inoltre, l'ho fatto in modo che le linee che accedevano alle stringhe esternalizzate non dovevano essere modificate.

Il numero di file nel nostro progetto è stato ridotto, il codice è stato mantenuto pulito come prima e non ci sono più avvisi di registro.

Grazie ragazzi. Fai rock.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top