diff --git a/android/build.gradle.kts b/android/build.gradle.kts index 9cb0c387..a63f08ed 100644 --- a/android/build.gradle.kts +++ b/android/build.gradle.kts @@ -77,7 +77,6 @@ dependencies { // Localization implementation(libs.moko.core) implementation(libs.moko.compose) - implementation(libs.locale) // Testing testImplementation(kotlin("test-junit")) diff --git a/core/build.gradle.kts b/core/build.gradle.kts index 066d7f77..3843901d 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -1,3 +1,5 @@ +import org.jetbrains.compose.compose + @Suppress("DSL_SCOPE_VIOLATION") plugins { id(libs.plugins.kotlin.multiplatform.get().pluginId) @@ -46,8 +48,8 @@ kotlin { api(libs.multiplatformSettings.core) api(libs.multiplatformSettings.coroutines) api(libs.multiplatformSettings.serialization) - api(libs.locale) api(libs.dateTime) + api(compose("org.jetbrains.compose.ui:ui-text")) } } val commonTest by getting { diff --git a/core/src/commonMain/kotlin/ca/gosyer/jui/core/lang/Locale.kt b/core/src/commonMain/kotlin/ca/gosyer/jui/core/lang/Locale.kt index 51619206..5da9730b 100644 --- a/core/src/commonMain/kotlin/ca/gosyer/jui/core/lang/Locale.kt +++ b/core/src/commonMain/kotlin/ca/gosyer/jui/core/lang/Locale.kt @@ -6,7 +6,7 @@ package ca.gosyer.jui.core.lang -import io.fluidsonic.locale.Locale +import androidx.compose.ui.text.intl.Locale expect fun Locale.Companion.getDefault(): Locale diff --git a/core/src/commonMain/kotlin/ca/gosyer/jui/core/lang/String.kt b/core/src/commonMain/kotlin/ca/gosyer/jui/core/lang/String.kt index e202d801..0dcbe5c7 100644 --- a/core/src/commonMain/kotlin/ca/gosyer/jui/core/lang/String.kt +++ b/core/src/commonMain/kotlin/ca/gosyer/jui/core/lang/String.kt @@ -6,7 +6,7 @@ package ca.gosyer.jui.core.lang -import io.fluidsonic.locale.Locale +import androidx.compose.ui.text.intl.Locale /** * Replaces the given string to have at most [count] characters using [replacement] at its end. diff --git a/core/src/jvmMain/kotlin/ca/gosyer/jui/core/lang/JvmLocale.kt b/core/src/jvmMain/kotlin/ca/gosyer/jui/core/lang/JvmLocale.kt index c74c81e8..eacf0756 100644 --- a/core/src/jvmMain/kotlin/ca/gosyer/jui/core/lang/JvmLocale.kt +++ b/core/src/jvmMain/kotlin/ca/gosyer/jui/core/lang/JvmLocale.kt @@ -6,12 +6,12 @@ package ca.gosyer.jui.core.lang -import io.fluidsonic.locale.Locale -import io.fluidsonic.locale.toCommon -import io.fluidsonic.locale.toPlatform +import androidx.compose.ui.text.intl.Locale import java.util.Locale as PlatformLocale -actual fun Locale.Companion.getDefault(): Locale = PlatformLocale.getDefault().toCommon() +actual fun Locale.Companion.getDefault(): Locale = current + +fun Locale.toPlatform() = PlatformLocale.forLanguageTag(toLanguageTag()) actual fun Locale.getDisplayLanguage(displayLocale: Locale): String = toPlatform() .getDisplayLanguage(displayLocale.toPlatform()) diff --git a/core/src/jvmMain/kotlin/ca/gosyer/jui/core/lang/JvmString.kt b/core/src/jvmMain/kotlin/ca/gosyer/jui/core/lang/JvmString.kt index 2bc4686c..0113b3f9 100644 --- a/core/src/jvmMain/kotlin/ca/gosyer/jui/core/lang/JvmString.kt +++ b/core/src/jvmMain/kotlin/ca/gosyer/jui/core/lang/JvmString.kt @@ -7,10 +7,9 @@ package ca.gosyer.jui.core.lang -import io.fluidsonic.locale.Locale -import io.fluidsonic.locale.toPlatform +import androidx.compose.ui.text.intl.Locale -fun String.capitalize(locale: Locale = Locale.getDefault()) = +fun String.capitalize(locale: Locale = Locale.current) = replaceFirstChar { if (it.isLowerCase()) it.titlecase(locale) else it.toString() } actual fun String.uppercase(locale: Locale): String = uppercase(locale.toPlatform()) diff --git a/data/build.gradle.kts b/data/build.gradle.kts index ad5bd82d..53e51214 100644 --- a/data/build.gradle.kts +++ b/data/build.gradle.kts @@ -43,9 +43,7 @@ kotlin { api(libs.ktor.auth) api(libs.ktor.logging) api(libs.ktor.websockets) - api(libs.ktor.okHttp) api(libs.okio) - api(libs.locale) api(libs.dateTime) api(projects.core) api(projects.i18n) @@ -61,6 +59,7 @@ kotlin { val desktopMain by getting { dependencies { api(kotlin("stdlib-jdk8")) + api(libs.ktor.okHttp) } } val desktopTest by getting { @@ -69,6 +68,7 @@ kotlin { val androidMain by getting { dependencies { api(kotlin("stdlib-jdk8")) + api(libs.ktor.okHttp) } } val androidTest by getting { diff --git a/data/src/commonMain/kotlin/ca/gosyer/jui/data/catalog/CatalogPreferences.kt b/data/src/commonMain/kotlin/ca/gosyer/jui/data/catalog/CatalogPreferences.kt index 9a72eb10..c37d60ee 100644 --- a/data/src/commonMain/kotlin/ca/gosyer/jui/data/catalog/CatalogPreferences.kt +++ b/data/src/commonMain/kotlin/ca/gosyer/jui/data/catalog/CatalogPreferences.kt @@ -6,11 +6,11 @@ package ca.gosyer.jui.data.catalog +import androidx.compose.ui.text.intl.Locale import ca.gosyer.jui.core.lang.getDefault import ca.gosyer.jui.core.prefs.Preference import ca.gosyer.jui.core.prefs.PreferenceStore import ca.gosyer.jui.data.library.model.DisplayMode -import io.fluidsonic.locale.Locale class CatalogPreferences(private val preferenceStore: PreferenceStore) { fun languages(): Preference> { diff --git a/data/src/commonMain/kotlin/ca/gosyer/jui/data/extension/ExtensionPreferences.kt b/data/src/commonMain/kotlin/ca/gosyer/jui/data/extension/ExtensionPreferences.kt index a1bef399..95ae1681 100644 --- a/data/src/commonMain/kotlin/ca/gosyer/jui/data/extension/ExtensionPreferences.kt +++ b/data/src/commonMain/kotlin/ca/gosyer/jui/data/extension/ExtensionPreferences.kt @@ -6,10 +6,10 @@ package ca.gosyer.jui.data.extension +import androidx.compose.ui.text.intl.Locale import ca.gosyer.jui.core.lang.getDefault import ca.gosyer.jui.core.prefs.Preference import ca.gosyer.jui.core.prefs.PreferenceStore -import io.fluidsonic.locale.Locale class ExtensionPreferences(private val preferenceStore: PreferenceStore) { fun languages(): Preference> { diff --git a/data/src/jvmMain/kotlin/ca/gosyer/jui/data/base/JvmDateHandler.kt b/data/src/jvmMain/kotlin/ca/gosyer/jui/data/base/JvmDateHandler.kt index 06d13378..6e29b0b9 100644 --- a/data/src/jvmMain/kotlin/ca/gosyer/jui/data/base/JvmDateHandler.kt +++ b/data/src/jvmMain/kotlin/ca/gosyer/jui/data/base/JvmDateHandler.kt @@ -6,9 +6,9 @@ package ca.gosyer.jui.data.base +import androidx.compose.ui.text.intl.Locale import ca.gosyer.jui.core.lang.getDefault -import io.fluidsonic.locale.Locale -import io.fluidsonic.locale.toPlatform +import ca.gosyer.jui.core.lang.toPlatform import kotlinx.datetime.Instant import kotlinx.datetime.toJavaInstant import me.tatarka.inject.annotations.Inject diff --git a/desktop/build.gradle.kts b/desktop/build.gradle.kts index 44623388..0fa25350 100644 --- a/desktop/build.gradle.kts +++ b/desktop/build.gradle.kts @@ -85,7 +85,6 @@ dependencies { // Localization implementation(libs.moko.core) implementation(libs.moko.compose) - implementation(libs.locale) // Testing testImplementation(kotlin("test-junit")) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 6453de7c..d7487e5d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -53,7 +53,6 @@ aboutLibraries = "10.1.0" dateTime = "0.3.2" # Localization -locale = "0.11.0" moko = "0.19.1" # BuildConfigs @@ -144,7 +143,6 @@ dateTime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version.ref = "d # Localization moko-core = { module = "dev.icerock.moko:resources", version.ref = "moko" } moko-compose = { module = "dev.icerock.moko:resources-compose", version.ref = "moko" } -locale = { module = "io.fluidsonic.locale:fluid-locale", version.ref = "locale" } # Optimizer proguard = { module = "com.guardsquare:proguard-gradle", version.ref = "proguard" } diff --git a/i18n/build.gradle.kts b/i18n/build.gradle.kts index 9099e59b..be986735 100644 --- a/i18n/build.gradle.kts +++ b/i18n/build.gradle.kts @@ -1,11 +1,8 @@ -import org.jetbrains.compose.compose - @Suppress("DSL_SCOPE_VIOLATION") plugins { id(libs.plugins.kotlin.multiplatform.get().pluginId) id(libs.plugins.android.library.get().pluginId) id(libs.plugins.moko.gradle.get().pluginId) - id(libs.plugins.compose.get().pluginId) } kotlin { @@ -28,8 +25,6 @@ kotlin { val commonMain by getting { dependencies { api(kotlin("stdlib-common")) - compileOnly(compose.runtime) - compileOnly(compose.ui) api(libs.moko.core) } } diff --git a/presentation/build.gradle.kts b/presentation/build.gradle.kts index e1c64aa0..b477499c 100644 --- a/presentation/build.gradle.kts +++ b/presentation/build.gradle.kts @@ -51,7 +51,6 @@ kotlin { api(libs.accompanist.pagerIndicators) api(libs.accompanist.flowLayout) api(libs.krokiCoroutines) - api(libs.locale) api(libs.dateTime) api(libs.aboutLibraries.core) api(libs.aboutLibraries.ui) diff --git a/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/base/components/LocaleToString.kt b/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/base/components/LocaleToString.kt index e3d65656..dc3a5e0c 100644 --- a/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/base/components/LocaleToString.kt +++ b/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/base/components/LocaleToString.kt @@ -6,10 +6,10 @@ package ca.gosyer.jui.ui.base.components +import androidx.compose.ui.text.intl.Locale import ca.gosyer.jui.core.lang.getDefault import ca.gosyer.jui.core.lang.getDisplayLanguage -import io.fluidsonic.locale.Locale -fun localeToString(locale: String) = Locale.forLanguageTag(locale) +fun localeToString(locale: String) = Locale(locale) .getDisplayLanguage(Locale.getDefault()) .ifBlank { locale.uppercase() } diff --git a/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/extensions/ExtensionsScreenViewModel.kt b/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/extensions/ExtensionsScreenViewModel.kt index d3e452d6..e9c0c647 100644 --- a/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/extensions/ExtensionsScreenViewModel.kt +++ b/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/extensions/ExtensionsScreenViewModel.kt @@ -6,6 +6,7 @@ package ca.gosyer.jui.ui.extensions +import androidx.compose.ui.text.intl.Locale import ca.gosyer.jui.core.lang.displayName import ca.gosyer.jui.data.extension.ExtensionPreferences import ca.gosyer.jui.data.models.Extension @@ -13,7 +14,6 @@ import ca.gosyer.jui.data.server.interactions.ExtensionInteractionHandler import ca.gosyer.jui.i18n.MR import ca.gosyer.jui.uicore.vm.ContextWrapper import ca.gosyer.jui.uicore.vm.ViewModel -import io.fluidsonic.locale.Locale import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.asStateFlow @@ -148,7 +148,7 @@ class ExtensionsScreenViewModel @Inject constructor( if (it.key == "all") { MR.strings.all.toPlatformString() } else { - Locale.forLanguageTag(it.key).displayName + Locale(it.key).displayName } } } diff --git a/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/extensions/components/ExtensionsScreenContent.kt b/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/extensions/components/ExtensionsScreenContent.kt index 4f0200c1..9b23982f 100644 --- a/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/extensions/components/ExtensionsScreenContent.kt +++ b/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/extensions/components/ExtensionsScreenContent.kt @@ -43,6 +43,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.FilterQuality import androidx.compose.ui.text.SpanStyle import androidx.compose.ui.text.buildAnnotatedString +import androidx.compose.ui.text.intl.Locale import androidx.compose.ui.text.withStyle import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp @@ -65,7 +66,6 @@ import com.vanpra.composematerialdialogs.MaterialDialog import com.vanpra.composematerialdialogs.MaterialDialogState import com.vanpra.composematerialdialogs.rememberMaterialDialogState import com.vanpra.composematerialdialogs.title -import io.fluidsonic.locale.Locale import io.kamel.image.lazyPainterResource @Composable @@ -240,7 +240,7 @@ fun LanguageDialog( horizontalArrangement = Arrangement.SpaceBetween ) { val langName by derivedStateOf { - Locale.forLanguageTag(lang).getDisplayName(locale).ifBlank { lang } + Locale(lang).getDisplayName(locale).ifBlank { lang.replaceFirstChar { if (it.isLowerCase()) it.titlecase() else it.toString() } } } Text(langName) Switch( diff --git a/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/library/LibraryScreenViewModel.kt b/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/library/LibraryScreenViewModel.kt index bac9b45d..296559d5 100644 --- a/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/library/LibraryScreenViewModel.kt +++ b/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/library/LibraryScreenViewModel.kt @@ -6,6 +6,7 @@ package ca.gosyer.jui.ui.library +import androidx.compose.ui.text.intl.Locale import ca.gosyer.jui.core.lang.getDefault import ca.gosyer.jui.core.lang.lowercase import ca.gosyer.jui.core.lang.withDefaultContext @@ -23,7 +24,6 @@ import ca.gosyer.jui.i18n.MR import ca.gosyer.jui.ui.util.lang.Collator import ca.gosyer.jui.uicore.vm.ContextWrapper import ca.gosyer.jui.uicore.vm.ViewModel -import io.fluidsonic.locale.Locale import kotlinx.coroutines.async import kotlinx.coroutines.awaitAll import kotlinx.coroutines.flow.MutableStateFlow diff --git a/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/settings/SettingsGeneralScreen.kt b/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/settings/SettingsGeneralScreen.kt index 4aece7cc..30ac2368 100644 --- a/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/settings/SettingsGeneralScreen.kt +++ b/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/settings/SettingsGeneralScreen.kt @@ -19,6 +19,7 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.produceState import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.text.intl.Locale import ca.gosyer.jui.core.lang.getDefault import ca.gosyer.jui.core.lang.getDisplayName import ca.gosyer.jui.core.lang.withIOContext @@ -41,7 +42,6 @@ import ca.gosyer.jui.uicore.vm.viewModel import cafe.adriel.voyager.core.screen.Screen import cafe.adriel.voyager.core.screen.ScreenKey import cafe.adriel.voyager.core.screen.uniqueScreenKey -import io.fluidsonic.locale.Locale import kotlinx.datetime.Clock import kotlinx.serialization.decodeFromString import kotlinx.serialization.json.Json @@ -101,7 +101,7 @@ class SettingsGeneralViewModel @Inject constructor( ?.jsonArray .orEmpty() .map { it.jsonPrimitive.content } - .associateWith { Locale.forLanguageTag(it).getDisplayName(currentLocale) } + .associateWith { Locale(it).getDisplayName(currentLocale) } } } } diff --git a/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/util/lang/Collator.kt b/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/util/lang/Collator.kt index 27ab8a47..85c13a95 100644 --- a/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/util/lang/Collator.kt +++ b/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/util/lang/Collator.kt @@ -6,7 +6,7 @@ package ca.gosyer.jui.ui.util.lang -import io.fluidsonic.locale.Locale +import androidx.compose.ui.text.intl.Locale expect fun Collator(locale: Locale): Collator diff --git a/presentation/src/jvmMain/kotlin/ca/gosyer/jui/ui/util/lang/Collator.kt b/presentation/src/jvmMain/kotlin/ca/gosyer/jui/ui/util/lang/Collator.kt index 6b293d9d..410b8bc6 100644 --- a/presentation/src/jvmMain/kotlin/ca/gosyer/jui/ui/util/lang/Collator.kt +++ b/presentation/src/jvmMain/kotlin/ca/gosyer/jui/ui/util/lang/Collator.kt @@ -6,8 +6,8 @@ package ca.gosyer.jui.ui.util.lang -import io.fluidsonic.locale.Locale -import io.fluidsonic.locale.toPlatform +import androidx.compose.ui.text.intl.Locale +import ca.gosyer.jui.core.lang.toPlatform import java.text.Collator as JvmCollator actual fun Collator(locale: Locale): Collator { diff --git a/ui-core/build.gradle.kts b/ui-core/build.gradle.kts index 6bce4511..a65e9313 100644 --- a/ui-core/build.gradle.kts +++ b/ui-core/build.gradle.kts @@ -40,7 +40,6 @@ kotlin { api(libs.coroutines.core) api(libs.kamel) api(libs.voyager.core) - api(libs.locale) api(libs.dateTime) api(projects.core) api(projects.i18n)