Selaa lähdekoodia

Set preferred locale in constructor, make it default in applyPreferred

Jürgen Kleer 1 vuosi sitten
vanhempi
commit
7d62fc78de

+ 4 - 1
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> 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.

+ 13 - 12
src/main/java/org/cryptomator/launcher/SupportedLanguages.java

@@ -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;
 	}
 
 }