From 3dd4117d4c49fec68ebec0a07ace7db76c23626c Mon Sep 17 00:00:00 2001 From: marhali Date: Mon, 11 Dec 2023 19:49:32 +0100 Subject: [PATCH] treat empty translation values as incomplete Resolves #347 --- CHANGELOG.md | 3 ++ .../easyi18n/util/TranslationUtil.java | 3 +- src/test/java/util/TranslationUtilTest.java | 30 +++++++++++++++++++ 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 src/test/java/util/TranslationUtilTest.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 83b9d36..a046ac9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,9 @@ ## [Unreleased] +### Changed +- Treat empty translation values (e.g. "") as incomplete + ## [4.4.4] - 2023-12-11 ### Fixed diff --git a/src/main/java/de/marhali/easyi18n/util/TranslationUtil.java b/src/main/java/de/marhali/easyi18n/util/TranslationUtil.java index f4f1b17..481f94b 100644 --- a/src/main/java/de/marhali/easyi18n/util/TranslationUtil.java +++ b/src/main/java/de/marhali/easyi18n/util/TranslationUtil.java @@ -48,7 +48,8 @@ public class TranslationUtil { * @return true if missing values were found otherwise false */ public static boolean isIncomplete(@NotNull TranslationValue value, @NotNull TranslationData data) { - return value.getLocaleContents().size() != data.getLocales().size(); + return value.getLocaleContents().size() != data.getLocales().size() + || value.getLocaleContents().stream().anyMatch(String::isEmpty); } /** diff --git a/src/test/java/util/TranslationUtilTest.java b/src/test/java/util/TranslationUtilTest.java new file mode 100644 index 0000000..0372c8c --- /dev/null +++ b/src/test/java/util/TranslationUtilTest.java @@ -0,0 +1,30 @@ +package util; + +import de.marhali.easyi18n.model.TranslationData; +import de.marhali.easyi18n.model.TranslationValue; +import de.marhali.easyi18n.util.TranslationUtil; +import org.junit.Assert; +import org.junit.Test; + +import java.util.Map; + +public class TranslationUtilTest { + @Test + public void isIncomplete() { + TranslationData data = new TranslationData(true); + + data.addLocale("de"); + data.addLocale("en"); + + TranslationValue complete = new TranslationValue(); + complete.setLocaleValues(Map.of("de", "deValue", "en", "enValue")); + Assert.assertFalse(TranslationUtil.isIncomplete(complete, data)); + + TranslationValue missingLocale = new TranslationValue("de", "deValue"); + Assert.assertTrue(TranslationUtil.isIncomplete(missingLocale, data)); + + TranslationValue emptyLocaleValue = new TranslationValue(); + emptyLocaleValue.setLocaleValues(Map.of("de", "deValue", "en", "")); + Assert.assertTrue(TranslationUtil.isIncomplete(emptyLocaleValue, data)); + } +}