mirror of
https://github.com/Suwayomi/TachideskJUI.git
synced 2025-12-10 14:52:03 +01:00
Improve language handling and Compose startup
This commit is contained in:
@@ -6,28 +6,12 @@
|
||||
|
||||
package ca.gosyer.data.translation
|
||||
|
||||
import ca.gosyer.data.ui.UiPreferences
|
||||
import java.util.Locale
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Provider
|
||||
|
||||
class ResourceProvider @Inject constructor(
|
||||
private val uiPreferences: UiPreferences
|
||||
) : Provider<XmlResourceBundle> {
|
||||
class ResourceProvider @Inject constructor() : Provider<XmlResourceBundle> {
|
||||
override fun get(): XmlResourceBundle {
|
||||
val languagePref = uiPreferences.language()
|
||||
return if (languagePref.isSet()) {
|
||||
languagePref.get().let {
|
||||
if (it.isBlank()) {
|
||||
getDefault()
|
||||
} else {
|
||||
val locale: Locale = Locale.forLanguageTag(it)
|
||||
Locale.setDefault(locale)
|
||||
XmlResourceBundle.forLocale(locale)
|
||||
}
|
||||
}
|
||||
} else getDefault()
|
||||
return XmlResourceBundle.forLocale(Locale.getDefault())
|
||||
}
|
||||
|
||||
private fun getDefault() = XmlResourceBundle.forLocale(Locale.getDefault())
|
||||
}
|
||||
|
||||
@@ -78,20 +78,14 @@ class XmlResourceBundle internal constructor(internal val lookup: ConcurrentHash
|
||||
val rootBundle = classLoader.getResourceAsStream("values/values/strings.xml")!!
|
||||
.use { XmlResourceBundle(it) }
|
||||
|
||||
val languageBundle = classLoader.getResourceAsStream("values/values-${locale.language}/strings.xml")
|
||||
val languageBundle = classLoader.getResourceAsStream("values/values-${locale.toLanguageTag()}/strings.xml")
|
||||
?.use { XmlResourceBundle(it) }
|
||||
|
||||
val languageTagBundle = classLoader.getResourceAsStream("values/values-${locale.toLanguageTag()}/strings.xml")
|
||||
?.use { XmlResourceBundle(it) }
|
||||
|
||||
var resultBundle = rootBundle
|
||||
if (languageBundle != null) {
|
||||
resultBundle += languageBundle
|
||||
return if (languageBundle != null) {
|
||||
rootBundle + languageBundle
|
||||
} else {
|
||||
rootBundle
|
||||
}
|
||||
if (languageTagBundle != null) {
|
||||
resultBundle += languageTagBundle
|
||||
}
|
||||
return resultBundle
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ import androidx.compose.runtime.DisposableEffect
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.configureSwingGlobalsForCompose
|
||||
import androidx.compose.ui.input.key.Key
|
||||
import androidx.compose.ui.input.key.key
|
||||
import androidx.compose.ui.window.Window
|
||||
@@ -49,6 +50,7 @@ import toothpick.configuration.Configuration
|
||||
import toothpick.ktp.KTP
|
||||
import toothpick.ktp.extension.getInstance
|
||||
import java.io.File
|
||||
import java.util.Locale
|
||||
import kotlin.system.exitProcess
|
||||
|
||||
@OptIn(DelicateCoroutinesApi::class)
|
||||
@@ -74,8 +76,22 @@ suspend fun main() {
|
||||
|
||||
val serverService = scope.getInstance<ServerService>()
|
||||
val uiPreferences = scope.getInstance<UiPreferences>()
|
||||
|
||||
// Call setDefault before getting a resource bundle
|
||||
val language = uiPreferences.language().get()
|
||||
if (language.isNotBlank()) {
|
||||
val locale: Locale? = Locale.forLanguageTag(language)
|
||||
if (locale != null) {
|
||||
Locale.setDefault(locale)
|
||||
}
|
||||
}
|
||||
|
||||
val resources = scope.getInstance<XmlResourceBundle>()
|
||||
|
||||
// Set the Compose constants before any
|
||||
// Swing functions are called
|
||||
configureSwingGlobalsForCompose()
|
||||
|
||||
uiPreferences.themeMode()
|
||||
.getAsFlow {
|
||||
if (!uiPreferences.windowDecorations().get()) {
|
||||
|
||||
Reference in New Issue
Block a user