From b1d350f2d79b91e3bb145da3d792221cc9a56c37 Mon Sep 17 00:00:00 2001 From: Steven KERDUDOU Date: Thu, 23 May 2024 15:43:02 +0200 Subject: [PATCH] [Core][i18n] Improved error message when unexpected key in properties file And skip empty keys (it happens sometimes but not sure why) --- .../vertigo/core/impl/locale/LocaleManagerImpl.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/vertigo-core/src/main/java/io/vertigo/core/impl/locale/LocaleManagerImpl.java b/vertigo-core/src/main/java/io/vertigo/core/impl/locale/LocaleManagerImpl.java index 0bd0a5cf6..2bea7fb50 100644 --- a/vertigo-core/src/main/java/io/vertigo/core/impl/locale/LocaleManagerImpl.java +++ b/vertigo-core/src/main/java/io/vertigo/core/impl/locale/LocaleManagerImpl.java @@ -43,6 +43,7 @@ import io.vertigo.core.locale.LocaleManager; import io.vertigo.core.locale.LocaleMessageKey; import io.vertigo.core.param.ParamValue; +import io.vertigo.core.util.StringUtil; /** * @author pchretien @@ -82,12 +83,12 @@ public final class LocaleManagerImpl implements LocaleManager { * Les exceptions sont toujours externalisées. * Les libellés de champs ne le sont pas. * La première Locale est celle utilisée si il n'y a aucun utilisateur déclaré (cas des batchs). - * * On précise la liste des locales sous la forme d'une chaine de caractères * exemples : * Locale.french : 'fr' * Locale.FRANCE + Locale.us : 'fr_FR,us' * Une locale est définie par une langue{_Pays{_Variante}} + * * @param locales Liste des locales gérées par l'application. * @param defaultZoneId ZoneId par défaut utilisée par l'application. */ @@ -206,8 +207,9 @@ private void check(final ResourceBundle resourceBundle, final LocaleMessageKey[] //1- Toutes les clés du fichier properties sont dans l'enum des resources for (final String key : Collections.list(resourceBundle.getKeys())) { - if (!resourcesKeys.contains(key)) { - throw new IllegalStateException("Une clé du fichier properties est inconnue : " + key); + if (!StringUtil.isBlank(key) && !resourcesKeys.contains(key)) { + throw new IllegalStateException( + "Une clé du fichier properties (bundle '" + resourceBundle.getBaseBundleName() + "', locale '" + resourceBundle.getLocale() + "') est inconnue : '" + key + "'"); } } @@ -280,7 +282,8 @@ private void onResourceNotFound(final String key) { /** * Evènement remonté lorsqu'une ressource externalisée n'est pas trouvée. - * @param resource Nom de la ressource externalisée non trouvée + * + * @param resource Nom de la ressource externalisée non trouvée * @param isMultiLocales Si appli multilingue */ private static void logResourceNotFound(final String resource, final boolean isMultiLocales) {