Server I18n API (Reborn)
This is a server-side only mod API to provide I18n for server-side only mods.
Its a modding library; you won't expect any visual effect without installing dependents.
Language detection is automatic when sending message to player(s).
This is a fork of Server I18n API for 26.1+ support.
Guide for developers
You need to put language JSONs in data/<mod id>/lang/<language>.json, filling in key-value pairs. Lang files in assets folders are ignored by ServerI18n.
API: ServerI18n.java class.
Examples:
// 1. Translate a key into a specific player's language with positional arguments
String msg = ServerI18n.translate(player, "chat.welcome", "Steve", 5);
// player's language (e.g., "zh_cn") -> "欢迎回来, Steve! 你有5条新消息。"
// 2. Send a translated system message to the command source (player or console)
ServerI18n.sendMessage(stack, "foo.command.success", "backup.zip");
// If stack is a player, uses their language; otherwise falls back to en_us.
// 3. Get raw translation without applying String.format (e.g., for custom formatting)
String raw = ServerI18n.translateRaw("fr_fr", "bar.gui.button.confirm");
// raw = "Confirmer" (if exists), otherwise fallback to en_us or the key itself.
// 4. Broadcast a message to all online players using the server instance
ServerI18n.broadcast(server, "announcement.maintenance", "10:00", "12:00");
// Each player receives the message in their own language.
// 5. Use default language (en_us) explicitly for console or fallback
Component comp = ServerI18n.translateToLiteralDefault("baz.error.file_not_found", "config.yml");
// comp is a literal Component with English text: "File not found: config.yml"
