From 1800f44941ca08d922abb722aa5a08be2a934e3f Mon Sep 17 00:00:00 2001 From: Jannik Reimers Date: Wed, 27 Nov 2024 23:13:31 +0100 Subject: [PATCH] work on the translation stuff in kordex that is required as of version 2.3 --- .idea/kotlinc.xml | 2 +- build.gradle.kts | 10 ++++-- gradle/libs.versions.toml | 2 +- settings.gradle.kts | 16 ++++++--- src/main/kotlin/dev/jansel/feixiao/App.kt | 4 +++ .../feixiao/extensions/StreamerCommand.kt | 33 ++++++++++--------- .../translations/feixiao/strings.properties | 16 +++++++++ 7 files changed, 57 insertions(+), 26 deletions(-) create mode 100644 src/main/resources/translations/feixiao/strings.properties diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml index d4b7acc..c224ad5 100644 --- a/.idea/kotlinc.xml +++ b/.idea/kotlinc.xml @@ -1,6 +1,6 @@ - \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index f795a72..802ad4c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -32,8 +32,7 @@ dependencies { } kordEx { - kordExVersion = "2.2.1-SNAPSHOT" - kordVersion = "0.16.0-SNAPSHOT" + kordExVersion = "2.3.1-SNAPSHOT" jvmTarget = 21 bot { @@ -42,6 +41,11 @@ kordEx { mainClass = "dev.jansel.feixiao.AppKt" } + + i18n { + classPackage = "dev.jansel.feixiao.i18n" + translationBundle = "feixiao.strings" + } } // Automatically generate a Dockerfile. Set `generateOnBuild` to `false` if you'd prefer to manually run the @@ -85,6 +89,6 @@ docker { } tasks.wrapper { - gradleVersion = "8.10.2" + gradleVersion = "8.11.1" distributionType = Wrapper.DistributionType.BIN } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 76665e0..9329a3e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,5 +1,5 @@ [versions] -kotlin = "2.0.20" # Note: Plugin versions must be updated in the settings.gradle.kts too +kotlin = "2.0.21" # Note: Plugin versions must be updated in the settings.gradle.kts too groovy = "3.0.22" jansi = "2.4.1" diff --git a/settings.gradle.kts b/settings.gradle.kts index 3e1187a..bc1be29 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,14 +1,20 @@ pluginManagement { plugins { // Update this in libs.version.toml when you change it here. - kotlin("jvm") version "2.0.20" - kotlin("plugin.serialization") version "2.0.20" + kotlin("jvm") version "2.0.21" + kotlin("plugin.serialization") version "2.0.21" - id("com.github.jakemarsden.git-hooks") version "0.0.2" id("com.github.johnrengelman.shadow") version "8.1.1" - id("dev.kordex.gradle.docker") version "1.4.2" - id("dev.kordex.gradle.kordex") version "1.4.2" + id("dev.kordex.gradle.docker") version "1.5.8" + id("dev.kordex.gradle.kordex") version "1.5.8" + } + repositories { + gradlePluginPortal() + mavenCentral() + + maven("https://snapshots-repo.kordex.dev") + maven("https://releases-repo.kordex.dev") } } diff --git a/src/main/kotlin/dev/jansel/feixiao/App.kt b/src/main/kotlin/dev/jansel/feixiao/App.kt index 9f70fcc..85a790f 100644 --- a/src/main/kotlin/dev/jansel/feixiao/App.kt +++ b/src/main/kotlin/dev/jansel/feixiao/App.kt @@ -13,6 +13,7 @@ import dev.jansel.feixiao.extensions.StreamerCommand import dev.jansel.feixiao.utils.* import dev.kord.core.entity.channel.GuildMessageChannel import dev.kordex.core.ExtensibleBot +import dev.kordex.core.i18n.SupportedLocales import io.github.oshai.kotlinlogging.KotlinLogging import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking @@ -27,6 +28,9 @@ suspend fun main() { add(::EventHooks) add(::StreamerCommand) } + i18n { + applicationCommandLocale(SupportedLocales.ENGLISH, SupportedLocales.GERMAN) + } } twitchClient = TwitchClientBuilder.builder() .withEnableHelix(true) diff --git a/src/main/kotlin/dev/jansel/feixiao/extensions/StreamerCommand.kt b/src/main/kotlin/dev/jansel/feixiao/extensions/StreamerCommand.kt index 3f7f66e..53bfedd 100644 --- a/src/main/kotlin/dev/jansel/feixiao/extensions/StreamerCommand.kt +++ b/src/main/kotlin/dev/jansel/feixiao/extensions/StreamerCommand.kt @@ -1,6 +1,7 @@ package dev.jansel.feixiao.extensions import dev.jansel.feixiao.database.collections.StreamerCollection +import dev.jansel.feixiao.i18n.Translations import dev.jansel.feixiao.twitchClient import dev.kord.common.entity.Permission import dev.kordex.core.checks.anyGuild @@ -18,12 +19,12 @@ class StreamerCommand : Extension() { override val name = "streaming" override suspend fun setup() { publicSlashCommand { - name = "streamer" - description = "Streamer commands" + name = Translations.Streamer.Command.name + description = Translations.Streamer.Command.description publicSubCommand(::AddStreamerArgs) { - name = "add" - description = "Add a streamer to the listener of this server" + name = Translations.Streamer.Command.Add.name + description = Translations.Streamer.Command.Add.description check { anyGuild() hasPermission(Permission.ManageGuild) @@ -39,8 +40,8 @@ class StreamerCommand : Extension() { } publicSubCommand(::RemoveStreamerArgs) { - name = "remove" - description = "Remove a streamer from the listener of this server" + name = Translations.Streamer.Command.Remove.name + description = Translations.Streamer.Command.Remove.description check { anyGuild() hasPermission(Permission.ManageGuild) @@ -58,29 +59,29 @@ class StreamerCommand : Extension() { inner class AddStreamerArgs : Arguments() { val streamer by string { - name = "streamer" - description = "The streamer to add" + name = Translations.Streamer.Command.Arguments.Add.Streamer.name + description = Translations.Streamer.Command.Arguments.Add.Streamer.description require(true) } val channel by channel { - name = "announcechannel" - description = "Channel where the bot will send a message when the streamer goes live" + name = Translations.Streamer.Command.Arguments.Add.Channel.name + description = Translations.Streamer.Command.Arguments.Add.Channel.description require(true) } val role by optionalRole { - name = "role" - description = "Role to ping when the streamer goes live" + name = Translations.Streamer.Command.Arguments.Add.Role.name + description = Translations.Streamer.Command.Arguments.Add.Role.description } val message by optionalString { - name = "message" - description = "Possible placeholders (put in curly braces!!): url, name, title, category, role (if set)" + name = Translations.Streamer.Command.Arguments.Add.Message.name + description = Translations.Streamer.Command.Arguments.Add.Message.description } } inner class RemoveStreamerArgs : Arguments() { val streamer by string { - name = "streamer" - description = "The streamer to remove" + name = Translations.Streamer.Command.Arguments.Remove.name + description = Translations.Streamer.Command.Arguments.Remove.description require(true) } } diff --git a/src/main/resources/translations/feixiao/strings.properties b/src/main/resources/translations/feixiao/strings.properties new file mode 100644 index 0000000..266c513 --- /dev/null +++ b/src/main/resources/translations/feixiao/strings.properties @@ -0,0 +1,16 @@ +streamer.command.name=streamer +streamer.command.description=A bundle of Streamer commands +streamer.command.add.name=add +streamer.command.add.description=Add a new streamer to the listener +streamer.command.remove.name=remove +streamer.command.remove.description=Remove a streamer from the listener +streamer.command.arguments.add.streamer.name=streamer +streamer.command.arguments.add.streamer.description=The streamer to add +streamer.command.arguments.add.channel.name=channel +streamer.command.arguments.add.channel.description=The channel to add the streamer to +streamer.command.arguments.add.role.name=role +streamer.command.arguments.add.role.description=The role to assign to the streamer +streamer.command.arguments.add.message.name=message +streamer.command.arguments.add.message.description=Custom Announce message. Placeholders (in curly braces): url, name, title, category, role (if set) +streamer.command.arguments.remove.name=streamer +streamer.command.arguments.remove.description=The streamer to remove