fix(localization): improve translation fallback logic and clean up code

This commit is contained in:
extio-de
2026-01-03 20:45:31 +01:00
parent 712e49d7aa
commit 39557a6489

View File

@@ -20,8 +20,9 @@ public class LocalizationServiceImpl implements LocalizationService {
public final static String NOT_FOUND_PREFIX = "{i18n."; public final static String NOT_FOUND_PREFIX = "{i18n.";
private static final List<String> LANGUAGE_STORAGE_PATH = List.of("gameEngine"); private static final List<String> LANGUAGE_STORAGE_PATH = List.of("gameEngine");
private static final String LANGUAGE_STORAGE_NAME = "currentLanguage"; private static final String LANGUAGE_STORAGE_NAME = "currentLanguage";
private final StorageService storageService; private final StorageService storageService;
private Localizations localizations = new Localizations(); private Localizations localizations = new Localizations();
@@ -33,7 +34,7 @@ public class LocalizationServiceImpl implements LocalizationService {
LocalizationServiceImpl(final StorageService storageService) { LocalizationServiceImpl(final StorageService storageService) {
this.storageService = storageService; this.storageService = storageService;
} }
@Override @Override
public void resetEntries() { public void resetEntries() {
this.localizations.getLanguages().forEach((lang, mapping) -> mapping.clear()); this.localizations.getLanguages().forEach((lang, mapping) -> mapping.clear());
@@ -122,14 +123,17 @@ public class LocalizationServiceImpl implements LocalizationService {
if (this.currentLanguage == null) { if (this.currentLanguage == null) {
return NOT_FOUND_PREFIX + id + "}"; return NOT_FOUND_PREFIX + id + "}";
} }
return this.currentLanguage.computeIfAbsent(id, key -> NOT_FOUND_PREFIX + key + "}"); return this.currentLanguage.computeIfAbsent(id, key -> key);
} }
@Override @Override
public String translate(final String id, final String defaultText) { public String translate(final String id, final String defaultText) {
String result = this.translate(id); if (this.currentLanguage == null) {
if (result.startsWith(NOT_FOUND_PREFIX)) { return defaultText;
result = defaultText; }
var result = this.currentLanguage.get(id);
if (result == null) {
return defaultText;
} }
return result; return result;
} }
@@ -205,7 +209,7 @@ public class LocalizationServiceImpl implements LocalizationService {
LOGGER.warn("Could not persist current language name", e); LOGGER.warn("Could not persist current language name", e);
} }
} }
private void loadPersistedLanguageName() { private void loadPersistedLanguageName() {
if (this.storageService == null) { if (this.storageService == null) {
return; return;