diff --git a/src/main/java/org/cryptomator/launcher/Cryptomator.java b/src/main/java/org/cryptomator/launcher/Cryptomator.java index c8f0dd3d3..2b066c730 100644 --- a/src/main/java/org/cryptomator/launcher/Cryptomator.java +++ b/src/main/java/org/cryptomator/launcher/Cryptomator.java @@ -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; private final ShutdownHook shutdownHook; @Inject - Cryptomator(DebugMode debugMode, Environment env, Lazy ipcMessageHandler, ShutdownHook shutdownHook) { + Cryptomator(DebugMode debugMode, SupportedLanguages supportedLanguages, Environment env, Lazy 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. diff --git a/src/main/java/org/cryptomator/launcher/SupportedLanguages.java b/src/main/java/org/cryptomator/launcher/SupportedLanguages.java index e50b7b29a..23d3e8fe0 100644 --- a/src/main/java/org/cryptomator/launcher/SupportedLanguages.java +++ b/src/main/java/org/cryptomator/launcher/SupportedLanguages.java @@ -25,28 +25,29 @@ public class SupportedLanguages { private final List 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 getLanguageTags() { - return Collections.unmodifiableList(sortedLanguageTags); + return sortedLanguageTags; } }