Switch ordering of translation providers (#403)

pull/404/head
Michael Barry 2022-12-01 17:26:04 -05:00 zatwierdzone przez GitHub
rodzic 2dc4bc660c
commit 926bc9210b
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
3 zmienionych plików z 19 dodań i 7 usunięć

Wyświetl plik

@ -506,7 +506,7 @@ public class Planetiler {
Wikidata.fetch(osmInputFile(), wikidataNamesFile, config(), profile(), stats());
}
if (useWikidata) {
translations().addTranslationProvider(Wikidata.load(wikidataNamesFile));
translations().addFallbackTranslationProvider(Wikidata.load(wikidataNamesFile));
}
if (onlyDownloadSources || onlyFetchWikidata) {
return; // exit only if just fetching wikidata or downloading sources

Wyświetl plik

@ -45,14 +45,25 @@ public class Translations {
* @param languages the set of 2-letter language codes to limit output translations to
*/
public static Translations defaultProvider(List<String> languages) {
return nullProvider(languages).addTranslationProvider(new OsmTranslationProvider());
return nullProvider(languages).addFallbackTranslationProvider(new OsmTranslationProvider());
}
/**
* Mutates this translation instance to add {@code provider} which will be used before all other providers.
*
* @deprecated
*/
@Deprecated(forRemoval = true)
public Translations addTranslationProvider(TranslationProvider provider) {
providers.add(0, provider);
return this;
}
/**
* Mutates this translation instance to add {@code provider} which will be used only if all existing providers fail to
* produce a translation for a given language.
*/
public Translations addTranslationProvider(TranslationProvider provider) {
public Translations addFallbackTranslationProvider(TranslationProvider provider) {
providers.add(provider);
return this;
}
@ -75,7 +86,7 @@ public class Translations {
for (var entry : translations.entrySet()) {
String key = entry.getKey();
if (languageSet.contains(key)) {
output.put(key.startsWith("name:") ? key : "name:" + key, entry.getValue());
output.putIfAbsent(key.startsWith("name:") ? key : "name:" + key, entry.getValue());
}
}
}

Wyświetl plik

@ -21,13 +21,14 @@ class TranslationsTest {
}
@Test
void testTwoProviders() {
void testTwoProvidersPrefersFirst() {
var translations = Translations.defaultProvider(List.of("en", "es", "de"))
.addTranslationProvider(elem -> Map.of("name:de", "de2", "name:en", "en2"));
assertEquals(Map.of("name:en", "en2", "name:es", "es1", "name:de", "de2"),
.addFallbackTranslationProvider(elem -> Map.of("name:de", "de2", "name:en", "en2"));
assertEquals(Map.of("name:en", "en1", "name:es", "es1", "name:de", "de2"),
translations.getTranslations(Map.of("name:en", "en1", "name:es", "es1")));
}
@Test
void testTransliterate() {
assertEquals("rì běn", Translations.transliterate("日本"));