Skip to content

Commit 6856ad1

Browse files
Use language files to translate messages.
1 parent faf93ec commit 6856ad1

File tree

5 files changed

+50
-17
lines changed

5 files changed

+50
-17
lines changed

src/main/kotlin/NoMathExpectation/chatExchange/neoForged/CustomLanguage.kt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package NoMathExpectation.chatExchange.neoForged
33
import net.minecraft.locale.Language
44
import net.minecraft.network.chat.Component
55
import net.minecraft.network.chat.FormattedText
6+
import net.minecraft.network.chat.MutableComponent
67
import net.minecraft.network.chat.Style
78
import net.minecraft.resources.ResourceLocation
89
import net.minecraft.server.MinecraftServer
@@ -98,4 +99,12 @@ fun Component.getStringWithLanguage(language: Language): String {
9899
val result = string
99100
Language.inject(current)
100101
return result
101-
}
102+
}
103+
104+
fun Component.toLiteral(language: Language = Language.getInstance()): Component =
105+
Component.literal(getStringWithLanguage(language))
106+
107+
fun String.toTranslatableComponent(vararg args: Any?): MutableComponent = Component.translatable(this, *args)
108+
109+
fun String.toTranslatedLiteral(vararg args: Any?, language: Language = Language.getInstance()): Component =
110+
Component.translatable(this, *args).toLiteral(language)

src/main/kotlin/NoMathExpectation/chatExchange/neoForged/ExchangeServer.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,11 @@ class ExchangeServer(
170170
}
171171
}
172172

173+
val language: Language get() = instance?.language ?: Language.getInstance()
174+
173175
fun componentToString(component: Component): String = instance?.componentToString(component) ?: component.string
174176
}
175-
}
177+
}
178+
179+
fun String.toExchangeServerTranslatedLiteral(vararg args: Any?): Component =
180+
toTranslatedLiteral(*args, language = ExchangeServer.language)

src/main/kotlin/NoMathExpectation/chatExchange/neoForged/NeoForgeEvents.kt

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package NoMathExpectation.chatExchange.neoForged
22

33
import com.mojang.brigadier.arguments.BoolArgumentType
4-
import net.minecraft.ChatFormatting
54
import net.minecraft.commands.Commands
65
import net.minecraft.network.chat.Component
76
import net.minecraft.network.chat.contents.PlainTextContents
@@ -36,7 +35,10 @@ object NeoForgeEvents {
3635
val data = event.player.server.chatExchangeData
3736
var message = event.message
3837
val string = ExchangeServer.componentToString(message)
39-
if ((!ChatExchangeConfig.chat.get() || data.isIgnoredPlayer(event.player.uuid)) && !(string.startsWith("@广播") || string.startsWith("@broadcast") || string.startsWith("@bc"))) {
38+
if ((!ChatExchangeConfig.chat.get() || data.isIgnoredPlayer(event.player.uuid)) && !(string.startsWith("@广播") || string.startsWith(
39+
"@broadcast"
40+
) || string.startsWith("@bc"))
41+
) {
4042
return
4143
}
4244

@@ -162,10 +164,10 @@ object NeoForgeEvents {
162164
val toggle = BoolArgumentType.getBool(context, "toggle")
163165
if (toggle) {
164166
data.removeIgnoredPlayer(player.uuid)
165-
player.sendSystemMessage(Component.literal("你的消息现在会被广播了。"))
167+
player.sendSystemMessage("modid.command.chatexchange.broadcastme.on".toExchangeServerTranslatedLiteral())
166168
} else {
167169
data.addIgnoredPlayer(player.uuid)
168-
player.sendSystemMessage(Component.literal("你的消息现在不会被广播了。"))
170+
player.sendSystemMessage("modid.command.chatexchange.broadcastme.off".toExchangeServerTranslatedLiteral())
169171
}
170172

171173
1
@@ -174,24 +176,19 @@ object NeoForgeEvents {
174176
val player = context.source.player ?: return@executes 0
175177
val data = player.server.chatExchangeData
176178
if (data.isIgnoredPlayer(player.uuid)) {
177-
player.sendSystemMessage(Component.literal("你的消息当前不会被广播。"))
179+
player.sendSystemMessage("modid.command.chatexchange.broadcastme.isoff".toExchangeServerTranslatedLiteral())
178180
} else {
179-
player.sendSystemMessage(Component.literal("你的消息当前会被广播。"))
181+
player.sendSystemMessage("modid.command.chatexchange.broadcastme.ison".toExchangeServerTranslatedLiteral())
180182
}
181183

182184
1
183185
}
184186
).executes { context ->
185187
val player = context.source.player ?: return@executes 0
186188

187-
val help = """
188-
${ChatFormatting.DARK_AQUA}${ChatFormatting.BOLD}ChatExchange 帮助${ChatFormatting.RESET}
189-
若服务器开启了广播消息,你的消息默认会被自动广播到外部端口。
190-
你可以使用 /chatexchange broadcastme 来控制你的消息是否被广播。
191-
同时,在发送消息前加上@广播/@broadcast也可以广播你的消息。
192-
""".trimIndent()
193-
194-
player.sendSystemMessage(Component.literal(help))
189+
player.sendSystemMessage(
190+
"modid.command.chatexchange.description".toExchangeServerTranslatedLiteral()
191+
)
195192
1
196193
}
197194

src/main/resources/assets/chatexchange/lang/en_us.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,10 @@
88
"modid.config.chat": "Enable Chatting",
99
"modid.config.joinLeave": "Enable Join/Leave",
1010
"modid.config.death": "Enable Death",
11-
"modid.config.advancement": "Enable Advancement"
11+
"modid.config.advancement": "Enable Advancement",
12+
"modid.command.chatexchange.description": "§3§lChatExchange Help§r\nIf the server has enabled broadcasting chat messages, your chat messages will be broadcast to an external port by default.\nYou can use /chatexchange broadcastme to control whether your chat messages will be broadcast.\nAlso, you can broadcast your messages by prefixing @broadcast/@bc.",
13+
"modid.command.chatexchange.broadcastme.on": "Your chat messages will now be broadcast.",
14+
"modid.command.chatexchange.broadcastme.off": "Your chat messages will not be broadcast.",
15+
"modid.command.chatexchange.broadcastme.ison": "Your chat messages are currently being broadcast.",
16+
"modid.command.chatexchange.broadcastme.isoff": "Your chat messages are currently not being broadcast."
1217
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"itemGroup.chatexchange": "Chat Exchange",
3+
"modid.config.host": "主机",
4+
"modid.config.port": "端口",
5+
"modid.config.token": "令牌",
6+
"modid.config.language": "语言",
7+
"modid.config.ignoreBotRegex": "忽略机器人正则",
8+
"modid.config.chat": "启用聊天消息",
9+
"modid.config.joinLeave": "启用加入/离开消息",
10+
"modid.config.death": "启用死亡消息",
11+
"modid.config.advancement": "启用进度消息",
12+
"modid.command.chatexchange.description": "§3§lChatExchange 帮助§r\n若服务器开启了广播聊天消息,你的聊天消息默认会被自动广播到外部端口。\n你可以使用 /chatexchange broadcastme 来控制你的消息是否被广播。\n同时,在发送消息前加上@广播/@broadcast/@bc前缀也可以广播你的消息。",
13+
"modid.command.chatexchange.broadcastme.on": "你的聊天消息现在会被广播了。",
14+
"modid.command.chatexchange.broadcastme.off": "你的聊天消息现在不会被广播了。",
15+
"modid.command.chatexchange.broadcastme.ison": "你的聊天消息当前会被广播。",
16+
"modid.command.chatexchange.broadcastme.isoff": "你的聊天消息当前不会被广播。"
17+
}

0 commit comments

Comments
 (0)