Si vous utilisez Oracle JDK ou OpenJDK, vous pouvez simplement remplacer les noms localisés des niveaux existants. Pour ce faire, créez un nouveau regroupement de ressources (fichier de propriétés ou classe de regroupement de ressources) sous le package sun.util.logging.resources
. Le bundle name doit être sous la forme logging_LANG_COUNTRY
.
Par exemple, voici un programme d'essai au titre du projet appelé LevelTest
:
import java.util.Locale;
import java.util.ResourceBundle;
import java.util.logging.Level;
public class NewLevels {
public static void main(String[] args) {
System.out.println(Locale.getDefault());
ResourceBundle rb = ResourceBundle.getBundle("sun.util.logging.resources.logging");
System.out.println(rb.getLocale());
System.out.println(Level.FINE.getLocalizedName());
System.out.println(Level.FINER.getLocalizedName());
System.out.println(Level.FINEST.getLocalizedName());
}
}
Lorsque j'exécute ce test, le lieu est imprimé en_US
. Par conséquent, mon nom de regroupement de ressources sera logging_en_US.properties
.
Les propriétés faisceau de ressources contiendra les suivantes:
FINE=VERBOSE
FINER=VERBOSE
FINEST=VERBOSE
Voici une liste de la structure du projet:
%USERPROFILE%\Documents\Projects\LevelTest\src\NewLevels.java
%USERPROFILE%\Documents\Projects\LevelTest\src\sun\util\logging\resources\logging_en_US.properties
Quand je lance le programme que je reçois la sortie suivante:
en_US
en_US
VERBOSE
VERBOSE
VERBOSE
Sur un projet plus important, vous devrez peut-être combattre une partie de l'émission de chargeur de classe pour s'assurer que l'ensemble de ressources correct est localisé. Sinon, si vous ne voulez pas faire cela, vous pouvez créer un custom formatter.
Cela semble plutôt bien. Avez-vous un problème sur une erreur? – Strelok
Le problème ne serait-il pas qu'un code de bibliothèque qui utilise directement 'Level.FINE' ne serait pas remplacé? Pourquoi voulez-vous remplacer ces chaînes en premier lieu? – Thomas