Translating
MultiLang makes it easy to translate entities, inventories, and plugin messages. This guide will show you how to use the translation system.Overview
With MultiLang, you can translate:- Entity names (mobs, items, etc.)
- Inventory titles and item names
- Plugin messages
- Any text sent to players
Remember to install
ProtocolLib or the
translations won’t work. ProtocolLib is required for packet manipulation.
How It Works
MultiLang handles all packets that the server sends to the client and translates them automatically. This means you can translate:- Chat messages
- Inventory titles
- Entity names
- Item names
- And more!
Using the Translation Pattern
To translate text, you need to use a special pattern:<lang>identifier</lang>
Replace identifier with the identifier of your translation string (defined in config.yml).
Basic Example
If you have a translation string with identifierwelcome:
Real-World Examples
Translating Menu Titles
If you’re using a menu plugin like DeluxeMenus, you can translate menu titles: Menu Config:Translating Plugin Messages
You can translate plugin messages. For example, with Essentials: Essentials Config:Multiple Translations in One Message
You can use multiple translations in a single message:gamemode- “Gamemode changed to”for- “for”
{0} and {1} are placeholders that will be replaced with actual values (e.g., player name, gamemode name).
Advanced Examples
Custom Plugin Messages
Here’s an example for creating custom plugin messages: Plugin Message:Entity Names
You can translate entity names in the game: Entity Config:Best Practices
-
Use descriptive identifiers - Choose clear names (e.g.,
welcome,menu_title,player_joined) - Break down complex messages - Split long messages into multiple translation strings for better flexibility
- Test with different languages - Always test your translations with players who speak those languages
-
Keep placeholders - Use
{0},{1}, etc., for dynamic values that shouldn’t be translated - Document your translations - Keep a list of all translation identifiers and their purposes
Troubleshooting
Q: Translations aren’t showing upA: Make sure:
- ProtocolLib is installed and enabled
- The translation identifier exists in your
config.yml - The
<lang>identifier</lang>pattern is correct - Players have selected a language (or autodetect is working)
A: Check:
- The text uses the
<lang>identifier</lang>pattern - The identifier is defined in your strings
- ProtocolLib is properly installed
A: Make sure:
- Placeholders like
{0},{1}are used correctly - The plugin sending the message supports placeholders
- MultiLang is processing the packets correctly
Related Guides
- Configuration - Learn how to configure translation strings
- Messages - Configure plugin messages
- RealTime - Set up real-time translation
Need Help?
Not sure about something? Join our Discord
server - we’ll help you set up
translations!