Set preferred locale in constructor, make it default in applyPreferred

This commit is contained in:
Jürgen Kleer
2023-04-27 18:03:41 +02:00
parent 8e7e7de358
commit 7d62fc78de
2 changed files with 17 additions and 13 deletions
@@ -35,13 +35,15 @@ public class Cryptomator {
private static final Logger LOG = LoggerFactory.getLogger(Cryptomator.class);
private final DebugMode debugMode;
private final SupportedLanguages supportedLanguages;
private final Environment env;
private final Lazy<IpcMessageHandler> ipcMessageHandler;
private final ShutdownHook shutdownHook;
@Inject
Cryptomator(DebugMode debugMode, Environment env, Lazy<IpcMessageHandler> ipcMessageHandler, ShutdownHook shutdownHook) {
Cryptomator(DebugMode debugMode, SupportedLanguages supportedLanguages, Environment env, Lazy<IpcMessageHandler> ipcMessageHandler, ShutdownHook shutdownHook) {
this.debugMode = debugMode;
this.supportedLanguages = supportedLanguages;
this.env = env;
this.ipcMessageHandler = ipcMessageHandler;
this.shutdownHook = shutdownHook;
@@ -78,6 +80,7 @@ public class Cryptomator {
LOG.debug("Dagger graph initialized after {}ms", System.currentTimeMillis() - STARTUP_TIME);
LOG.info("Starting Cryptomator {} on {} {} ({})", env.getAppVersion(), SystemUtils.OS_NAME, SystemUtils.OS_VERSION, SystemUtils.OS_ARCH);
debugMode.initialize();
supportedLanguages.applyPreferred();
/*
* Attempts to create an IPC connection to a running Cryptomator instance and sends it the given args.
@@ -25,28 +25,29 @@ public class SupportedLanguages {
private final List<String> sortedLanguageTags;
private final Locale preferredLocale;
@Inject
public SupportedLanguages(Settings settings) {
var preferredLanguage = settings.languageProperty().get();
if (preferredLanguage == null) {
LOG.debug("Using system locale");
} else {
var preferredLocale = Locale.forLanguageTag(preferredLanguage);
LOG.debug("Applying preferred locale {}", preferredLocale.getDisplayName(Locale.ENGLISH));
Locale.setDefault(preferredLocale);
}
sortedLanguageTags = LANGUAGE_TAGS.stream().sorted((a, b) -> {
var collator = Collator.getInstance(Locale.getDefault());
preferredLocale = preferredLanguage == null ? Locale.getDefault() : Locale.forLanguageTag(preferredLanguage);
var sorted = LANGUAGE_TAGS.stream().sorted((a, b) -> {
var collator = Collator.getInstance(preferredLocale);
collator.setStrength(Collator.PRIMARY);
return collator.compare(Locale.forLanguageTag(a).getDisplayName(), Locale.forLanguageTag(b).getDisplayName());
}).collect(Collectors.toList());
sortedLanguageTags.add(0, Settings.DEFAULT_LANGUAGE);
sortedLanguageTags.add(1, ENGLISH);
sorted.add(0, Settings.DEFAULT_LANGUAGE);
sorted.add(1, ENGLISH);
sortedLanguageTags = Collections.unmodifiableList(sorted);
}
public void applyPreferred() {
LOG.debug("Using locale {}", preferredLocale);
Locale.setDefault(preferredLocale);
}
public List<String> getLanguageTags() {
return Collections.unmodifiableList(sortedLanguageTags);
return sortedLanguageTags;
}
}