package org.jabref.logic.l10n; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Locale; import java.util.ResourceBundle; import java.util.stream.Collectors; import org.junit.Test; import static org.junit.Assert.assertTrue; /** * Checks that all property files are correctly encoded and can be loaded without errors. */ public class PropertiesLocaleCompletenessTest { @Test public void testi10nFiles() throws IOException { for(Path p : Files.list(Paths.get("src/main/resources/l10n")).collect(Collectors.toList())) { String[] parts = p.getFileName().toString().split("\\.")[0].split("_"); String prefix = "l10n/" + parts[0]; Locale locale; if(parts.length == 3) { locale = new Locale(parts[1], parts[2]); } else { locale = new Locale(parts[1]); } checkPropertiesFile(locale, prefix); } } @Test public void testCompletenessOfBundles() { for(String lang : Languages.LANGUAGES.values()) { Path menuPropertyFile = Paths.get("src/main/resources").resolve(Localization.MENU_RESOURCE_PREFIX + "_" + lang + ".properties"); assertTrue(Files.exists(menuPropertyFile)); Path messagePropertyFile = Paths.get("src/main/resources").resolve(Localization.RESOURCE_PREFIX + "_" + lang + ".properties"); assertTrue(Files.exists(messagePropertyFile)); } } private void checkPropertiesFile(Locale locale, String prefix) { Locale oldLocale = Locale.getDefault(); try { Locale.setDefault(locale); ResourceBundle.getBundle(prefix, locale, new EncodingControl(StandardCharsets.UTF_8)); } finally { Locale.setDefault(oldLocale); } } }