From 22b2d4d68f4d93af0ab6a52bf51547b083cc8378 Mon Sep 17 00:00:00 2001 From: Philip-Larsen-Donnelly Date: Mon, 27 Jan 2025 22:28:04 +0100 Subject: [PATCH 1/3] feat: include Uzbek variants in default DB locales --- .../dhis/startup/I18nLocalePopulator.java | 30 +++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/I18nLocalePopulator.java b/dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/I18nLocalePopulator.java index 624f35d36827..4c6dba979ea2 100644 --- a/dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/I18nLocalePopulator.java +++ b/dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/I18nLocalePopulator.java @@ -55,7 +55,8 @@ public I18nLocalePopulator(I18nLocaleService localeService) { private static final Set DEFAULT_LOCALES = Set.of( "af", "ar", "bi", "am", "de", "dz", "en", "es", "fa", "fr", "gu", "hi", "id", "it", "km", - "lo", "my", "ne", "nl", "no", "ps", "pt", "ru", "rw", "sw", "tg", "vi", "zh"); + "lo", "my", "ne", "nl", "no", "ps", "pt", "ru", "rw", "sw", "tg", "uz__latn", "uz__cyrl", "vi", "zh" + ); @Override public void executeInTransaction() { @@ -65,10 +66,33 @@ public void executeInTransaction() { return; } - for (String locale : DEFAULT_LOCALES) { - localeService.saveI18nLocale(new I18nLocale(new Locale(locale)), new SystemUser()); + for (String localeStr : DEFAULT_LOCALES) { + Locale locale = parseLocaleString(localeStr); + localeService.saveI18nLocale(new I18nLocale(locale), new SystemUser()); } log.info("Populated default locales"); } + + /** + * Parses a locale string into a Locale object. + * + * @param localeStr the locale string to parse + * @return the parsed Locale object + * @throws IllegalArgumentException if the locale string is invalid + * + * Supports locales of the form [_[_]] + */ + private Locale parseLocaleString(String localeStr) { + if (!localeStr.contains("_")) { + return new Locale(localeStr); + } + + String[] parts = localeStr.split("_"); + return switch (parts.length) { + case 2 -> new Locale(parts[0], parts[1]); + case 3 -> new Locale(parts[0], parts[1], parts[2]); + default -> throw new IllegalArgumentException("Invalid locale format: " + localeStr); + }; + } } From 94f1b8b5e074da5efef8add475e6b21584cdc5a3 Mon Sep 17 00:00:00 2001 From: Philip-Larsen-Donnelly <35666657+Philip-Larsen-Donnelly@users.noreply.github.com> Date: Mon, 27 Jan 2025 23:39:26 +0100 Subject: [PATCH 2/3] Fix the strings to match existing implementations --- .../main/java/org/hisp/dhis/startup/I18nLocalePopulator.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/I18nLocalePopulator.java b/dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/I18nLocalePopulator.java index 4c6dba979ea2..c556580ec1b5 100644 --- a/dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/I18nLocalePopulator.java +++ b/dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/I18nLocalePopulator.java @@ -55,8 +55,8 @@ public I18nLocalePopulator(I18nLocaleService localeService) { private static final Set DEFAULT_LOCALES = Set.of( "af", "ar", "bi", "am", "de", "dz", "en", "es", "fa", "fr", "gu", "hi", "id", "it", "km", - "lo", "my", "ne", "nl", "no", "ps", "pt", "ru", "rw", "sw", "tg", "uz__latn", "uz__cyrl", "vi", "zh" - ); + "lo", "my", "ne", "nl", "no", "ps", "pt", "ru", "rw", "sw", "tg", "uz_UZ_Cyrl", + "uz_UZ_Latn", "vi", "zh"); @Override public void executeInTransaction() { From 445e3d4d265120b0762be21638f23c620220811b Mon Sep 17 00:00:00 2001 From: Philip-Larsen-Donnelly Date: Mon, 27 Jan 2025 23:47:27 +0100 Subject: [PATCH 3/3] chore: run mvn spotless for formatting errors --- .../dhis/startup/I18nLocalePopulator.java | 36 ++++++++++++++++--- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/I18nLocalePopulator.java b/dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/I18nLocalePopulator.java index c556580ec1b5..d7dd4661d509 100644 --- a/dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/I18nLocalePopulator.java +++ b/dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/I18nLocalePopulator.java @@ -54,9 +54,36 @@ public I18nLocalePopulator(I18nLocaleService localeService) { private static final Set DEFAULT_LOCALES = Set.of( - "af", "ar", "bi", "am", "de", "dz", "en", "es", "fa", "fr", "gu", "hi", "id", "it", "km", - "lo", "my", "ne", "nl", "no", "ps", "pt", "ru", "rw", "sw", "tg", "uz_UZ_Cyrl", - "uz_UZ_Latn", "vi", "zh"); + "af", + "ar", + "bi", + "am", + "de", + "dz", + "en", + "es", + "fa", + "fr", + "gu", + "hi", + "id", + "it", + "km", + "lo", + "my", + "ne", + "nl", + "no", + "ps", + "pt", + "ru", + "rw", + "sw", + "tg", + "uz_UZ_Cyrl", + "uz_UZ_Latn", + "vi", + "zh"); @Override public void executeInTransaction() { @@ -80,8 +107,7 @@ public void executeInTransaction() { * @param localeStr the locale string to parse * @return the parsed Locale object * @throws IllegalArgumentException if the locale string is invalid - * - * Supports locales of the form [_[_]] + *

Supports locales of the form [_[_]] */ private Locale parseLocaleString(String localeStr) { if (!localeStr.contains("_")) {