Sueta

Linguify | Hover to Translate Chat [1.8-1.21] | Free, No API

2.0.0

Chat stays as it was typed - hover any message to read it in your own language. Free, no API key, wo

·Plugin

Linguify
Hover any message. Read it in your own language.

>>> JOIN OUR DISCORD <<<

Preview: https://i.gyazo.com/286f201e16e56b4e10cf37db9b2b1716.mp4

How it works
Linguify does not rewrite your chat. Every message stays exactly as it was typed, so nothing about your server's look changes.

Each player picks their own language once. From then on, hovering over any message shows them that message in their own language:

  • Full - the complete translation
  • Word by word - each word with its translation next to it
  • Off - no hover at all

Players choose this themselves with /lang hover or in /lang settings. Prefer the classic style? Set chat-display: "replace" and Linguify translates the chat line instead, with the original behind the hover.

What gets a translation hover
Three features, each a separate switch in the config, and each one players can turn off for themselves:

  • Player chat - what other players type
  • Join and quit messages - "X joined the game"
  • Server and plugin messages - broadcasts and chat from any other plugin (Essentials, WorldEdit, ...)

100% free - no API key needed
Linguify works the second you drop it in, using free translation services with automatic failover. Want more volume or quality? Add your own DeepL key (free plan: 500k characters/month), LibreTranslate or OpenAI - multiple keys per provider, rotated automatically when one hits its limit.

Optional AI clean-up: with an OpenAI key you can let AI fix typos and chat slang before translating, so "wr is da nethr portl??" gets translated as what the player actually meant.

Translated once, free forever
Every translation is cached in memory and saved to disk per language. A text is only ever sent to a translation service once - after that it is instant and costs nothing, even after a restart. When one player unlocks a language, every other player who picks it gets it instantly.

Zero setup

  1. Drop Linguify.jar in your plugins folder
  2. Start your server. Done.

Linguify downloads the ProtocolLib build matching your server version automatically (needed for server and plugin messages). Player data goes to YAML by default, or MySQL / MariaDB / PostgreSQL if you prefer.

Commands

/linguify (or /lang)            open the language menu
/lang <code>                    set your language, e.g. /lang nl
/lang settings                  your personal settings (GUI)
/lang hover <full|words|off>    what the hover shows you
/lang list                      clickable language list in chat
/linguify info                  status and statistics
/linguify stats                 who uses which language (admin)
/linguify reload                reload the config (admin)

Permissions are fully configurable: map any permission node to any set of commands in config.yml.

Compatibility
Spigot and Paper, 1.8 through 1.21. Works next to any chat plugin - Linguify only adds a hover to outgoing messages per player and never touches your server data or other plugins.

What Linguify sends, and why
We want to be completely transparent about this.

1) bStats (anonymous statistics)
Public for everyone to see: bstats.org/plugin/bukkit/Linguify/33586
Standard bStats data (server software, Minecraft version, Java version, player count, country) plus which languages players pick and which features are enabled, so we know what to build next. No player names, no UUIDs, no chat content. You can turn it off for all plugins in plugins/bStats/config.yml.

Questions? Bugs? Ideas?
Join the Discord!

Similar projects

Plugin →