Skip to content

Translation and displayed text customization

discord-mcbe provides messages for the different places where it displays information. When you want to change a message, you can customize it through translation_overrides in the config file without editing the code.

Use the setting that matches what you want to change:

What you want to change Setting
The Bot and console language language (an available locale)
One specific message translation_overrides

To change one specific message, add its replacement to translation_overrides as follows:

{
"language": "en-US",
"translation_overrides": {
"minecraft.message": "§b[Chat]§r <%0§r> %1§r",
"discord.join": "🎉 %0 joined the game!",
"command.help.commands": "Available commands:"
}
}
  • Edit only the translation_overrides section of your existing config.json; do not delete the rest of the configuration.
  • Use keys shown in the table below. A misspelled or unknown key is rejected by configuration validation.
  • Preserve placeholders such as %0; they are where values such as player names and message text are inserted.
  • Set the entire value to "$key" to reuse another translation in the same locale (for example, "command.help.silent.description": "$common.silent.description"). If the target is absent in that locale, en-US is used. Missing targets and cycles cause an error.
  • Minecraft messages can use color codes such as §a. Discord messages are interpreted as Discord Markdown, so format characters matter.
  • Restart discord-mcbe after changing the configuration.

Find the key you want to change in the table. Its language selector is independent from the docs site’s display language.

KeyValueInherited from
minecraft.connect§9[discord-mcbe]§r §7Connected to %0§r
minecraft.message§9[Discord]§r <%0§r> %1§r
minecraft.message.withAttachments§9[Discord]§r <%0§r> §o§7(%1 files)§r
minecraft.reply§9[Discord]§r <%0§r> §7[Reply: <%1§r§7> %2]§r %3§r
minecraft.reply.withAttachments§9[Discord]§r <%0§r> §7[Reply: <%1§r§7> %2]§r §o§7(%3 files)§r
discord.readyConnection server has started
discord.connectConnected to the world
discord.disconnectDisconnected from the world
discord.chat<%0> %1
discord.chat.multipleWorlds[%0] <%1> %2
discord.join%0 joined the game
discord.leave%0 left the game
discord.panel.uptimeUptime
command.error.catch❌ An error has occurred while processing Interaction
command.error.noworldsNot connected to world
command.error.nopermissionYou don't have permission to use this command
command.ping.descriptionCheck the connection status with the world
command.help.descriptionShow the available commands
command.help.commandsList of commands:
command.help.silent.descriptionWhether to send the result only to yourself
command.list.descriptionDisplays the number of players connected to the world
command.list.silent.descriptionWhether to send the result only to yourself
command.list.world.descriptionSpecify the world to display the number of players
command.list.playersPlayer Count
command.panel.descriptionManage status panels
command.panel.create.descriptionCreate a new status panel
command.panel.create.successStatus panel created in channel %0
command.panel.show.descriptionShow the status panel
command.panel.show.notFoundStatus panel is not configured yet
command.command.descriptionSend a command to the world
command.command.command.descriptionThe command to execute
command.command.raw.descriptionDisplay the return value of the command in JSON format
command.command.silent.descriptionWhether to send the result only to yourself
command.command.world.descriptionSpecify the world to execute the command in
command.command.sendingSending command...
console.loginLogged in as %0
console.socket.ready[Local] SocketBridge server is listening on port: %0
console.socket.command[Local] Enter one of the following commands in Minecraft to connect:
console.script.ready[BDS] Bridge server is listening on port: %0
console.update.availableA new version of %0 is available: v%2 (current: v%1)
console.connect[%0] Connected to the world
console.disconnect[%0] Disconnected from the world
console.join[%0] %1 joined the game
console.leave[%0] %1 left the game
console.message[Discord | %0] <%1> %2
console.message.withAttachments[Discord | %0] <%1> (%2 files)
console.reply[Discord | %0] <%1> [Reply: <%2> %3] %4
console.reply.withAttachments[Discord | %0] <%1> [Reply: <%2> %3] (%4 files)
console.command[Discord | %0] <%1> %2
console.chat[%0] <%1> %2
common.silent.descriptionWhether to send the result only to yourself
common.duration%0h %1m %2s
common.noOnlineWorldsThere are currently no online worlds.
common.worldNotFoundWorld %0 not found
death.attack.anvil%0 was squashed by a falling anvil
death.attack.arrow%0 was shot by %1
death.attack.arrow.item%0 was shot by %1 using %2
death.attack.bullet%0 was sniped by %1
death.attack.cactus%0 was pricked to death
death.attack.cactus.player%0 walked into a cactus whilst trying to escape %1
death.attack.dehydration%0 died from dehydration
death.attack.drown%0 drowned
death.attack.drown.player%0 drowned whilst trying to escape %1
death.attack.explosion%0 blew up
death.attack.explosion.by.bed%0 was killed by [Intentional Game Design]
death.attack.explosion.player%0 was blown up by %1
death.attack.fall%0 hit the ground too hard
death.attack.fallingBlock%0 was squashed by a falling block
death.attack.fireball%0 was fireballed by %1
death.attack.fireball.item%0 was fireballed by %1 using %2
death.attack.fireworks%0 went off with a bang
death.attack.flyIntoWall%0 experienced kinetic energy
death.attack.generic%0 died
death.attack.indirectMagic%0 was killed by %1 using magic
death.attack.indirectMagic.item%0 was killed by %1 using %2
death.attack.inFire%0 went up in flames
death.attack.inFire.player%0 walked into fire whilst fighting %1
death.attack.inWall%0 suffocated in a wall
death.attack.lava%0 tried to swim in lava
death.attack.lava.player%0 tried to swim in lava to escape %1
death.attack.lightningBolt%0 was struck by lightning
death.attack.maceSmash.player%0 was smashed by %1
death.attack.maceSmash.player.item%0 was smashed by %1 with %2
death.attack.magic%0 was killed by magic
death.attack.magma%0 discovered the floor was lava
death.attack.magma.player%0 walked on danger zone due to %1
death.attack.mob%0 was slain by %1
death.attack.mob.item%0 was slain by %1 using %2
death.attack.onFire%0 burned to death
death.attack.onFire.player%0 was burnt to a crisp whilst fighting %1
death.attack.outOfWorld%0 fell out of the world
death.attack.player%0 was slain by %1
death.attack.player.item%0 was slain by %1 using %2
death.attack.spit%0 was spitballed by %1
death.attack.starve%0 starved to death
death.attack.sulfurCube.hot%0 died because not just the floor is lava
death.attack.sweetBerry%0 was poked to death by a sweet berry bush
death.attack.thorns%0 was killed trying to hurt %1
death.attack.thrown%0 was pummeled by %1
death.attack.thrown.item%0 was pummeled by %1 using %2
death.attack.trident%0 was impaled to death by %1
death.attack.wither%0 withered away
death.attack.freeze%0 froze to death
death.attack.sonicBoom%0 was obliterated by a sonically-charged shriek
death.attack.sonicBoom.player%0 was obliterated by a sonically-charged shriek whilst trying to escape %1
death.attack.stalactite%0 was skewered by a falling stalactite
death.attack.stalagmite%0 was impaled on a stalagmite
death.fell.accident.generic%0 fell from a high place
death.fell.accident.ladder%0 fell off a ladder
death.fell.accident.vines%0 fell off some vines
death.fell.accident.water%0 fell out of the water
death.fell.assist%0 was doomed to fall by %1
death.fell.assist.item%0 was doomed to fall by %1 using %2
death.fell.finish%0 fell too far and was finished by %1
death.fell.finish.item%0 fell too far and was finished by %1 using %2
death.fell.killer%0 was doomed to fall
entity.agent.nameAgent
entity.area_effect_cloud.nameArea Effect Cloud
entity.armadillo.nameArmadillo
entity.armor_stand.nameArmor Stand
entity.arrow.nameArrow
entity.bat.nameBat
entity.bee.nameBee
entity.blaze.nameBlaze
entity.boat.nameBoat
entity.bogged.nameBogged
entity.breeze.nameBreeze
entity.breeze_wind_charge_projectile.nameWind Charge
entity.cat.nameCat
entity.cave_spider.nameCave Spider
entity.chicken.nameChicken
entity.cow.nameCow
entity.creaking.nameCreaking
entity.creeper.nameCreeper
entity.dolphin.nameDolphin
entity.goat.nameGoat
entity.panda.namePanda
entity.donkey.nameDonkey
entity.dragon_fireball.nameDragon Fireball
entity.drowned.nameDrowned
entity.egg.nameEgg
entity.elder_guardian.nameElder Guardian
entity.ender_crystal.nameEnder Crystal
entity.ender_dragon.nameEnder Dragon
entity.enderman.nameEnderman
entity.endermite.nameEndermite
entity.ender_pearl.nameEnder Pearl
entity.evocation_illager.nameEvoker
entity.evocation_fang.nameEvoker Fang
entity.eye_of_ender_signal.nameEye of Ender
entity.falling_block.nameFalling Block
entity.fireball.nameFireball
entity.fireworks_rocket.nameFirework Rocket
entity.fishing_hook.nameFishing Hook
entity.fish.clownfish.nameClownfish
entity.fox.nameFox
entity.cod.nameCod
entity.pufferfish.namePufferfish
entity.salmon.nameSalmon
entity.tropicalfish.nameTropical Fish
entity.axolotl.nameAxolotl
entity.ghast.nameGhast
entity.glow_squid.nameGlow Squid
entity.piglin_brute.namePiglin Brute
entity.guardian.nameGuardian
entity.hoglin.nameHoglin
entity.horse.nameHorse
entity.husk.nameHusk
entity.ravager.nameRavager
entity.iron_golem.nameIron Golem
entity.item.nameItem
entity.leash_knot.nameLeash Knot
entity.lightning_bolt.nameLightning Bolt
entity.lingering_potion.nameLingering Potion
entity.llama.nameLlama
entity.trader_llama.nameTrader Llama
entity.llama_spit.nameLlama Spit
entity.magma_cube.nameMagma Cube
entity.minecart.nameMinecart
entity.chest_minecart.nameMinecart with Chest
entity.command_block_minecart.nameMinecart with Command Block
entity.furnace_minecart.nameMinecart with Furnace
entity.hopper_minecart.nameMinecart with Hopper
entity.tnt_minecart.nameMinecart with TNT
entity.mule.nameMule
entity.mooshroom.nameMooshroom
entity.moving_block.nameMoving Block
entity.npc.nameNPC
entity.ocelot.nameOcelot
entity.ominous_item_spawner.nameOminous Item Spawner
entity.painting.namePainting
entity.parrot.nameParrot
entity.phantom.namePhantom
entity.pig.namePig
entity.piglin.namePiglin
entity.pillager.namePillager
entity.player.namePlayer
entity.polar_bear.namePolar Bear
entity.rabbit.nameRabbit
entity.sheep.nameSheep
entity.shulker.nameShulker
entity.shulker_bullet.nameShulker Bullet
entity.silverfish.nameSilverfish
entity.skeleton.nameSkeleton
entity.skeleton_horse.nameSkeleton Horse
entity.stray.nameStray
entity.slime.nameSlime
entity.small_fireball.nameSmall Fireball
entity.sniffer.nameSniffer
entity.snowball.nameSnowball
entity.snow_golem.nameSnow Golem
entity.spider.nameSpider
entity.splash_potion.namePotion
entity.squid.nameSquid
entity.strider.nameStrider
entity.tnt.nameBlock of TNT
entity.thrown_trident.nameTrident
entity.tripod_camera.nameTripod Camera
entity.turtle.nameTurtle
entity.unknown.nameUnknown
entity.vex.nameVex
entity.villager.nameVillager
entity.villager.armorArmorer
entity.villager.butcherButcher
entity.villager.cartographerCartographer
entity.villager.clericCleric
entity.villager.farmerFarmer
entity.villager.fishermanFisherman
entity.villager.fletcherFletcher
entity.villager.leatherLeatherworker
entity.villager.librarianLibrarian
entity.villager.shepherdShepherd
entity.villager.toolTool Smith
entity.villager.weaponWeapon Smith
entity.villager.masonMason
entity.villager.unskilledUnskilled Villager
entity.villager_v2.nameVillager
entity.vindicator.nameVindicator
entity.wandering_trader.nameWandering Trader
entity.wind_charge_projectile.nameWind Charge
entity.witch.nameWitch
entity.wither.nameWither
entity.wither_skeleton.nameWither Skeleton
entity.wither_skull.nameWither Skull
entity.wither_skull_dangerous.nameWither Skull
entity.wolf.nameWolf
entity.xp_orb.nameExperience Orb
entity.xp_bottle.nameBottle o' Enchanting
entity.zoglin.nameZoglin
entity.zombie.nameZombie
entity.zombie_horse.nameZombie Horse
entity.zombie_pigman.nameZombified Piglin
entity.zombie_villager.nameZombie Villager
entity.zombie_villager_v2.nameZombie Villager
entity.frog.nameFrog
entity.tadpole.nameTadpole
entity.warden.nameWarden
entity.allay.nameAllay
entity.chest_boat.nameBoat with Chest
entity.camel.nameCamel
entity.chest_raft.nameRaft with Chest
entity.happy_ghast.nameHappy Ghast
entity.copper_golem.nameCopper Golem
entity.sulfur_cube.nameSulfur Cube
entity.nautilus.nameNautilus
entity.zombie_nautilus.nameZombie Nautilus
entity.parched.nameParched
entity.camel_husk.nameCamel Husk

Translations are pairs of keys and values. Code refers to a key such as discord.join instead of embedding the displayed sentence directly.

Layer Location Purpose
Regular displayed text projects/server/src/assets/locales/<locale>.json Discord, console, Minecraft chat, and command descriptions
Minecraft-derived text <locale>.generated.json Death messages and entity names generated from Mojang language files
Runtime language config.json → language Selects an available locale
User overrides config.json → translation_overrides Replaces individual values in the selected language

At startup, discord-mcbe merges the regular and .generated.json files for the selected language, then applies translation_overrides. If a key is missing in the selected language, it falls back to the baseline locale (en-US); if the baseline also has no value, the key itself is displayed.

translation_overrides is not a nested per-language object; it is applied to the runtime map selected by config.language. If the Bot language changes, the same override value is applied to that language. For different text per language, change each source JSON.

config.translation_overrides can override keys that exist in the baseline locale (en-US). Extra keys found only in a locale file are not valid override targets. Inherited from is shown only when the selected language has no value and the value is supplied by the baseline locale.

Values can contain %0, %1, and other placeholders. They are replaced by arguments passed from the code in order. References written as $key retain the target’s placeholders.

Key: minecraft.message
Value: §9[Discord]§r <%0§r> %1§r
Result: §9[Discord]§r <Steve> hello§r

Edit these files for discord-mcbe-owned text such as Discord messages, console messages, Minecraft chat wrappers, and command descriptions:

projects/server/src/assets/locales/<locale>.json

Use the baseline locale (currently en-US) for keys and arguments. Keep the same keys in every locale and keep the placeholder count and %0-based numbering aligned. After adding or removing keys, regenerate the types and config schema:

ターミナルウィンドウ
pnpm --filter @discord-mcbe/server generate-lang-types
pnpm --filter @discord-mcbe/server generate-schema

About Minecraft death messages and entity names

Section titled “About Minecraft death messages and entity names”

death.* and entity.* belong in generated files:

projects/server/src/assets/locales/<locale>.generated.json

These files are generated by the extract-minecraft-lang script from the language files in Mojang/bedrock-samples. Mojang-style placeholders such as %1$s are converted to discord-mcbe’s zero-based %0 format. Do not edit these files manually.

ターミナルウィンドウ
pnpm --filter @discord-mcbe/server extract-minecraft-lang
pnpm --filter @discord-mcbe/server generate-lang-types
pnpm --filter @discord-mcbe/server generate-schema

Add non-Mojang, discord-mcbe-owned messages to the regular JSON for each locale.

To add a language:

  1. Add translations to projects/server/src/assets/locales/<locale>.json.
  2. Add the locale to the locales variable in projects/server/scripts/extract-minecraft-lang.ts to extract its Minecraft translations.
  3. Import and register the JSON files in templateMap in projects/server/src/util/i18n.ts.
  4. Run generate-lang-types and generate-schema.
  5. Verify that the translations are displayed correctly.