Support providing the translation or the original message as a tooltip
This commit is contained in:
parent
533fa19630
commit
a5dee00b14
|
@ -7,4 +7,5 @@ public class GoogleChatConfig implements JfConfig {
|
||||||
@Entry public static Boolean enabled = true;
|
@Entry public static Boolean enabled = true;
|
||||||
@Entry public static String serverLanguage = "auto";
|
@Entry public static String serverLanguage = "auto";
|
||||||
@Entry public static String clientLanguage = "en";
|
@Entry public static String clientLanguage = "en";
|
||||||
|
@Entry public static Boolean translationTooltip = false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,9 +10,7 @@ import net.fabricmc.loader.api.FabricLoader;
|
||||||
import net.minecraft.network.MessageType;
|
import net.minecraft.network.MessageType;
|
||||||
import net.minecraft.network.PacketByteBuf;
|
import net.minecraft.network.PacketByteBuf;
|
||||||
import net.minecraft.network.packet.s2c.play.GameMessageS2CPacket;
|
import net.minecraft.network.packet.s2c.play.GameMessageS2CPacket;
|
||||||
import net.minecraft.text.LiteralText;
|
import net.minecraft.text.*;
|
||||||
import net.minecraft.text.Text;
|
|
||||||
import net.minecraft.util.Util;
|
|
||||||
import org.spongepowered.asm.mixin.Final;
|
import org.spongepowered.asm.mixin.Final;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Mutable;
|
import org.spongepowered.asm.mixin.Mutable;
|
||||||
|
@ -21,6 +19,7 @@ import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
@Mixin(GameMessageS2CPacket.class)
|
@Mixin(GameMessageS2CPacket.class)
|
||||||
|
@ -51,9 +50,21 @@ public class GameMessageS2CPacketMixin {
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
try {
|
try {
|
||||||
message = new LiteralText(TranslateService.translate(sb.toString(), Language.byId(GoogleChatConfig.serverLanguage), client));
|
LiteralText translatedText = new LiteralText(TranslateService.translate(sb.toString(), Language.byId(GoogleChatConfig.serverLanguage), client));
|
||||||
|
if (GoogleChatConfig.translationTooltip)
|
||||||
|
message = googlechat$concat(message.getWithStyle(Style.EMPTY.withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new LiteralText("Translated: ").append(translatedText)))));
|
||||||
|
else
|
||||||
|
message = translatedText.setStyle(Style.EMPTY.withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new LiteralText("Original: ").append(message))));
|
||||||
} catch (TranslateException e) {
|
} catch (TranslateException e) {
|
||||||
GoogleChat.LOGGER.error("Could not translate received message", e);
|
GoogleChat.LOGGER.error("Could not translate received message", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Text googlechat$concat(List<Text> texts) {
|
||||||
|
MutableText res = null;
|
||||||
|
for (Text text : texts) {
|
||||||
|
res = res == null ? (MutableText) text : res.append(text);
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,5 +5,7 @@
|
||||||
"google-chat.jfconfig.serverLanguage": "Server Language",
|
"google-chat.jfconfig.serverLanguage": "Server Language",
|
||||||
"google-chat.jfconfig.serverLanguage.tooltip": "The language of the server used in translations. \"auto\" will disable translating your own messages",
|
"google-chat.jfconfig.serverLanguage.tooltip": "The language of the server used in translations. \"auto\" will disable translating your own messages",
|
||||||
"google-chat.jfconfig.clientLanguage": "Client Language",
|
"google-chat.jfconfig.clientLanguage": "Client Language",
|
||||||
"google-chat.jfconfig.clientLanguage.tooltip": "Your own language used in translations. \"auto\" will disable translating messages by other server members"
|
"google-chat.jfconfig.clientLanguage.tooltip": "Your own language used in translations. \"auto\" will disable translating messages by other server members",
|
||||||
|
"google-chat.jfconfig.translationTooltip": "Translation Tooltip",
|
||||||
|
"google-chat.jfconfig.translationTooltip.tooltip": "Display translations as a tooltip (on hover) and keep the original message"
|
||||||
}
|
}
|
Loading…
Reference in New Issue