Java i18n: utilizzare uno di accesso ResourceBundle per ogni pacchetto, o uno per tutto il progetto?
-
20-09-2019 - |
Domanda
Io non so nulla di internazionalizzazione.
Ho un progetto con diversi pacchetti. Sto usando wizard di Eclipse built-in "esternalizzazione Strings" per estrarre le costanti di stringa in mie classi di un file di proprietà e sostituire quelle corde con le chiamate a una funzione di accesso statica. Così, invece di
System.out.println("Hello, world!");
io alla fine con
System.out.println(Messages.getString("MyKey"));
ed un Messages
classe di utilità in ogni confezione (che fornisce un metodo getString
statico per ottenere la stringa desiderata da un ResourceBundle [in questo caso un file .properties
]). E 'meglio avere una classe Messages
in ogni confezione, o di avere una singola classe Messages
per l'intero progetto?
Soluzione
Sono a favore di un file di localizzazione globale. Avrete chiavi duplicate ( "OK", "Cancel"), che richiederebbe la duplicazione o la nidificazione, e l'interfacciamento con l'esterno la gente di localizzazione è più facile se le risorse sono consolidati.
Altri suggerimenti
vorrei mantenere uno-per-package. In questo modo la manutenzione / refactoring / unit test è molto più facile.
Inoltre, non ci sono dipendenze globali su un singolo file.