mirror of
https://github.com/LuckPerms/LuckPerms.git
synced 2024-10-05 08:47:39 +02:00
TranslationManager fixes and improvements (#3165)
This commit is contained in:
parent
d1cb644712
commit
2cf77db8b6
@ -40,6 +40,7 @@ import me.lucko.luckperms.common.util.Predicates;
|
||||
import net.kyori.adventure.text.Component;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.stream.Collectors;
|
||||
@ -70,12 +71,12 @@ public class TranslationsCommand extends SingleCommand {
|
||||
return;
|
||||
}
|
||||
|
||||
Message.INSTALLED_TRANSLATIONS.send(sender, plugin.getTranslationManager().getInstalledLocales().stream().map(Locale::toString).collect(Collectors.toList()));
|
||||
Message.INSTALLED_TRANSLATIONS.send(sender, plugin.getTranslationManager().getInstalledLocales().stream().map(Locale::toLanguageTag).sorted().collect(Collectors.toList()));
|
||||
|
||||
Message.AVAILABLE_TRANSLATIONS_HEADER.send(sender);
|
||||
for (LanguageInfo language : availableTranslations) {
|
||||
Message.AVAILABLE_TRANSLATIONS_ENTRY.send(sender, language.locale().toString(), TranslationManager.localeDisplayName(language.locale()), language.progress(), language.contributors());
|
||||
}
|
||||
availableTranslations.stream()
|
||||
.sorted(Comparator.comparing(language -> language.locale().toLanguageTag()))
|
||||
.forEach(language -> Message.AVAILABLE_TRANSLATIONS_ENTRY.send(sender, language.locale().toLanguageTag(), TranslationManager.localeDisplayName(language.locale()), language.progress(), language.contributors()));
|
||||
sender.sendMessage(Message.prefixed(Component.empty()));
|
||||
Message.TRANSLATIONS_DOWNLOAD_PROMPT.send(sender, label);
|
||||
}
|
||||
|
@ -123,9 +123,10 @@ public class TranslationManager {
|
||||
for (Path translationFile : translationFiles) {
|
||||
try {
|
||||
Map.Entry<Locale, ResourceBundle> result = loadCustomTranslationFile(translationFile);
|
||||
if (result != null) {
|
||||
loaded.put(result.getKey(), result.getValue());
|
||||
}
|
||||
} catch (IllegalArgumentException e) {
|
||||
// common error is from adventure "java.lang.IllegalArgumentException: Invalid key" -- don't print the whole stack trace.
|
||||
this.plugin.getLogger().warn("Error loading locale file: " + translationFile.getFileName() + " - " + e);
|
||||
} catch (Exception e) {
|
||||
this.plugin.getLogger().warn("Error loading locale file: " + translationFile.getFileName(), e);
|
||||
}
|
||||
@ -135,27 +136,27 @@ public class TranslationManager {
|
||||
loaded.forEach((locale, bundle) -> {
|
||||
Locale localeWithoutCountry = new Locale(locale.getLanguage());
|
||||
if (!locale.equals(localeWithoutCountry) && !localeWithoutCountry.equals(DEFAULT_LOCALE) && this.installed.add(localeWithoutCountry)) {
|
||||
try {
|
||||
this.registry.registerAll(localeWithoutCountry, bundle, false);
|
||||
} catch (IllegalArgumentException e) {
|
||||
// ignore "IllegalArgumentException: Invalid key" from adventure TranslationRegistry
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private Map.Entry<Locale, ResourceBundle> loadCustomTranslationFile(Path translationFile) {
|
||||
private Map.Entry<Locale, ResourceBundle> loadCustomTranslationFile(Path translationFile) throws IOException {
|
||||
String fileName = translationFile.getFileName().toString();
|
||||
String localeString = fileName.substring(0, fileName.length() - ".properties".length());
|
||||
Locale locale = parseLocale(localeString);
|
||||
|
||||
if (locale == null) {
|
||||
this.plugin.getLogger().warn("Unknown locale '" + localeString + "' - unable to register.");
|
||||
return null;
|
||||
throw new IllegalStateException("Unknown locale '" + localeString + "' - unable to register.");
|
||||
}
|
||||
|
||||
PropertyResourceBundle bundle;
|
||||
try (BufferedReader reader = Files.newBufferedReader(translationFile, StandardCharsets.UTF_8)) {
|
||||
bundle = new PropertyResourceBundle(reader);
|
||||
} catch(IOException e) {
|
||||
this.plugin.getLogger().warn("Error loading locale file: " + localeString, e);
|
||||
return null;
|
||||
}
|
||||
|
||||
this.registry.registerAll(locale, bundle, false);
|
||||
|
Loading…
Reference in New Issue
Block a user