Skip to content

Languages

Florianpal1 edited this page Aug 6, 2026 · 1 revision

Languages

FMessage uses ACF locales. Each module reads a single file named lang_<code>.yml, where <code> is the value of the lang option in its config.yml.

Module Folder Contents
Proxy (Velocity) plugins/fmessage/lang_<code>.yml acf-fmessage + acf-minecraft + acf-core
Proxy (BungeeCord) plugins/FMessageBungee/lang_<code>.yml acf-fmessage + acf-minecraft + acf-core
Backend (Bukkit) plugins/FMessageBukkit/lang_<code>.yml acf-minecraft + acf-core only

Shipped out of the box: en and fr.

The file is extracted from the jar the first time the plugin starts, using the current lang value. Change lang, restart, and the matching file is extracted if it does not exist yet.


Sections

Section What it holds
acf-fmessage All FMessage messages — proxy only
acf-minecraft ACF's Minecraft-specific errors (unknown player, invalid world…)
acf-core ACF's framework messages (invalid syntax, permission denied, help output)

acf-fmessage keys

acf-fmessage:
  help_description: "Show help for different commands"
  no_previous_player: "You were not talking with any player."
  player_offline: "The player is not logged in."

  spy_activate: "You have activated the spy."
  spy_desactivate: "You have disabled the spy."

  ignore_success: "You are now ignoring the player {player}."
  ignore_already: "You already ignore the player {player}."
  sender_ignore_message: "You cannot send a message to someone you ignores!"
  target_ignore_message: "The person you are trying to reach ignores you!"
  cannot_ignore: "You can't ignore this person."
  unignore_success: "You no longer ignore the player {player}."
  unignore_already: "You do not ignore the player {player}."
  ignore_not_exist: "Player {player} never know connected to the server."

  group_already_exist: "Group {group} already exist."
  group_create_success: "You have successfully created the group {group}"
  group_cannot_exist: "Group {group} doesn't exist."
  group_remove_success: "You successfully removed the player {player} of the group {group}."
  group_already_in_group: "Player {player} is already in the group."
  group_addmember_success: "You added the player {player} to the group {group}."
  group_member_not_ingroup: "You are not currently in the group."
  group_removemember_success: "You kick the player {player} of the group {group}"
  group_toggle_desactivate: "You have disabled the toggle on the group {group}."
  group_toggle_activate: "You have enabled the toggle on the group {group}."
  group_already_toggle: "Your toggle is already enabled on a group."
  group_msg: "[{group}] {player} : {message}"

  nickname_remove: "You no longer have a nickname."
  nickname_add: "You have been renamed by {NewNickName}."
  nickname_update: "You have updated your nickname {OldNickName} for {NewNickName}."

Placeholders per key

Placeholder Used in
{player} ignore_*, unignore_*, group_*member*, group_msg
{group} every group_* key
{message} group_msg
{NewNickName}, {OldNickName} nickname_add, nickname_update

group_msg is the group chat format. This is the key to edit if you want to restyle group messages — there is no group option in config.yml.


Adding a new language

  1. Copy an existing file, e.g. lang_en.ymllang_es.yml, in the plugin folder.
  2. Translate the values. Keep the keys and the {…} placeholders untouched.
  3. Set lang: "es" in config.yml.
  4. Restart the plugin.

Do this for the proxy and for every backend server if you want the ACF errors translated everywhere.


Colours in messages

Language values are rendered through the same legacy serialiser as the formats, so &-codes work: &c, &l, &r… Hex colours are not supported.

ACF also has its own colour tags — <c1>, <c2>, <c3> — which map to the colours configured by the plugin (yellow / gold / red). They are used throughout acf-core and acf-minecraft; you can keep or drop them.

Clone this wiki locally