mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-16 10:55:01 -04:00
chat: allow nested translations
This should fix some bugs in 1.19 where chat messages appear missing. Yes, it will crash with a StackOverflow when using it arbitrary :)
This commit is contained in:
parent
ceebf63c3c
commit
030ea52a6c
@ -93,7 +93,8 @@ class BaseComponent : ChatComponent {
|
|||||||
val with: MutableList<Any> = mutableListOf()
|
val with: MutableList<Any> = mutableListOf()
|
||||||
json["with"].toJsonList()?.let { withArray ->
|
json["with"].toJsonList()?.let { withArray ->
|
||||||
for (part in withArray) {
|
for (part in withArray) {
|
||||||
with.add(part ?: continue)
|
if (part == null) continue
|
||||||
|
with += ChatComponent.of(raw = part, translator, component, restricted = restrictedMode)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
val fallback = json["fallback"]?.toString()
|
val fallback = json["fallback"]?.toString()
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
package de.bixilon.minosoft.data.text
|
package de.bixilon.minosoft.data.text
|
||||||
|
|
||||||
import de.bixilon.kutil.url.URLUtil.toURL
|
import de.bixilon.kutil.url.URLUtil.toURL
|
||||||
|
import de.bixilon.minosoft.data.language.lang.Language
|
||||||
import de.bixilon.minosoft.data.text.ChatComponent.Companion.chat
|
import de.bixilon.minosoft.data.text.ChatComponent.Companion.chat
|
||||||
import de.bixilon.minosoft.data.text.events.click.OpenFileClickEvent
|
import de.bixilon.minosoft.data.text.events.click.OpenFileClickEvent
|
||||||
import de.bixilon.minosoft.data.text.events.click.OpenURLClickEvent
|
import de.bixilon.minosoft.data.text.events.click.OpenURLClickEvent
|
||||||
@ -234,6 +235,17 @@ internal class ChatComponentTest {
|
|||||||
assertEquals(text, expected)
|
assertEquals(text, expected)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `Nested translations`() {
|
||||||
|
val language = Language("en_US", mutableMapOf(
|
||||||
|
"gameMode.changed" to "Dein Spielmodus wurde zu %s geändert",
|
||||||
|
"gameMode.creative" to "Kreativmodus",
|
||||||
|
))
|
||||||
|
val text = ChatComponent.of("""{"translate":"gameMode.changed","with":[{"translate":"gameMode.creative"}]}""", translator = language)
|
||||||
|
val expected = BaseComponent(TextComponent("Dein Spielmodus wurde zu "), TextComponent("Kreativmodus"), TextComponent(" geändert"))
|
||||||
|
assertEquals(text, expected)
|
||||||
|
}
|
||||||
|
|
||||||
private fun assertEquals(expected: ChatComponent, actual: ChatComponent) {
|
private fun assertEquals(expected: ChatComponent, actual: ChatComponent) {
|
||||||
when (expected) {
|
when (expected) {
|
||||||
is BaseComponent -> {
|
is BaseComponent -> {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user