{"id":102,"date":"2026-08-28T18:52:07","date_gmt":"2026-08-28T18:52:07","guid":{"rendered":"https:\/\/interaction-bot.com\/blog\/flag-translation-discord\/"},"modified":"2026-08-28T18:52:22","modified_gmt":"2026-08-28T18:52:22","slug":"flag-translation-discord","status":"publish","type":"post","link":"https:\/\/interaction-bot.com\/blog\/flag-translation-discord\/","title":{"rendered":"Flag Translation on Discord: React with a Flag Emoji and the Bot Translates"},"content":{"rendered":"<p>Flag translation is what Discord server admins call a translation bot that waits for a flag-emoji reaction instead of translating everything. A member clicks \ud83c\uddeb\ud83c\uddf7 under a message and the bot replies with that message translated into French. Add \ud83c\uddef\ud83c\uddf5 and you get Japanese. A reaction, not a command, requests the translation. Interaction Bot, a Discord translation bot active in more than 55,000 servers, supports flag translation per channel, and the <a href=\"https:\/\/doc.interaction-bot.com\/getting-started\">official getting-started guide<\/a> lists it as the bot&#8217;s first translation method: send a message, add a flag emoji, read the translation. This guide covers what happens behind that reaction, how to switch the feature on in the dashboard, which flag maps to which language, and when flag mode beats always-on auto-translate.<\/p>\n<h2>How flag translation works on Discord<\/h2>\n<p>The mechanics are the same on any flag-translation bot, and the details below are the ones in <a href=\"https:\/\/doc.interaction-bot.com\/website\/dashboard\/flag-translation\">Interaction Bot&#8217;s flag-translation documentation<\/a>. A channel that has flag translation activated is watched by the bot. When a member adds a reaction to a message, Discord fires that event to the bot, which then reads the original message, works out what language it is written in, translates it into the language of the flag that was added, and posts the result back in the same channel for everyone to see.<\/p>\n<p>Three settings control the behavior, all set per channel:<\/p>\n<ul>\n<li><strong>Activated.<\/strong> The switch that turns flag translation on or off for a specific channel.<\/li>\n<li><strong>Sending mode.<\/strong> &#8220;Every time&#8221; translates on each new reaction, even when the same message already has a translation. &#8220;Once&#8221; translates only if flag translation has not already handled that message.<\/li>\n<li><strong>Auto delete.<\/strong> When enabled, the bot removes its translated output after a delay that changes with the length of the source message. When disabled, translations stay until someone cleans them up.<\/li>\n<\/ul>\n<p>Members need no commands and no setup on their side; the whole request is one click. The same control also exists as a slash command, <code>\/config flag_translation<\/code>, documented in the <a href=\"https:\/\/doc.interaction-bot.com\/commands\/translation\">translation command reference<\/a> with arguments for the channel, auto-delete, and the mode, though most admins configure flag mode once in the dashboard and never touch it again.<\/p>\n<h2>Which flag emoji maps to which language<\/h2>\n<p>Flag translation has no language dropdown, because the flag is the language choice. The bot maps each country flag emoji to that country&#8217;s primary language, so the reader picks the target language by picking the flag. Our <a href=\"https:\/\/interaction-bot.com\/blog\/connect-discord-to-translate\/\">guide to connecting Discord to translate<\/a> gives the example: the French flag translates a message into French, the Japanese flag into Japanese. A quick reference for the flags a server most often sees:<\/p>\n<div class=\"table-wrap\"><table>\n<thead>\n<tr>\n<th>Flag<\/th>\n<th>Language<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\ud83c\uddeb\ud83c\uddf7<\/td>\n<td>French<\/td>\n<\/tr>\n<tr>\n<td>\ud83c\udde9\ud83c\uddea<\/td>\n<td>German<\/td>\n<\/tr>\n<tr>\n<td>\ud83c\uddea\ud83c\uddf8<\/td>\n<td>Spanish<\/td>\n<\/tr>\n<tr>\n<td>\ud83c\uddee\ud83c\uddf9<\/td>\n<td>Italian<\/td>\n<\/tr>\n<tr>\n<td>\ud83c\uddf5\ud83c\uddf9<\/td>\n<td>Portuguese<\/td>\n<\/tr>\n<tr>\n<td>\ud83c\uddf9\ud83c\uddf7<\/td>\n<td>Turkish<\/td>\n<\/tr>\n<tr>\n<td>\ud83c\uddf5\ud83c\uddf1<\/td>\n<td>Polish<\/td>\n<\/tr>\n<tr>\n<td>\ud83c\uddf3\ud83c\uddf1<\/td>\n<td>Dutch<\/td>\n<\/tr>\n<tr>\n<td>\ud83c\uddf7\ud83c\uddfa<\/td>\n<td>Russian<\/td>\n<\/tr>\n<tr>\n<td>\ud83c\uddfa\ud83c\uddf8 \/ \ud83c\uddec\ud83c\udde7<\/td>\n<td>English<\/td>\n<\/tr>\n<tr>\n<td>\ud83c\uddef\ud83c\uddf5<\/td>\n<td>Japanese<\/td>\n<\/tr>\n<tr>\n<td>\ud83c\uddf0\ud83c\uddf7<\/td>\n<td>Korean<\/td>\n<\/tr>\n<tr>\n<td>\ud83c\udde8\ud83c\uddf3<\/td>\n<td>Chinese (Mandarin)<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<figure class=\"post-figure\"><img loading=\"lazy\" decoding=\"async\" width=\"1707\" height=\"2560\" class=\"wp-image-106\" alt=\"small toy country flags pinned on a world globe\" src=\"https:\/\/interaction-bot.com/blog\/wp-content\/uploads\/sites\/5\/2026\/08\/pexels-photo-8828610-scaled.jpeg\" title=\"Credit: lara-jameson, Pexels License, via https:\/\/www.pexels.com\/photo\/toy-flags-pinned-on-world-map-8828610\/\" srcset=\"https:\/\/interaction-bot.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/08\/pexels-photo-8828610-scaled.jpeg 1707w, https:\/\/interaction-bot.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/08\/pexels-photo-8828610-200x300.jpeg 200w, https:\/\/interaction-bot.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/08\/pexels-photo-8828610-683x1024.jpeg 683w, https:\/\/interaction-bot.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/08\/pexels-photo-8828610-768x1152.jpeg 768w, https:\/\/interaction-bot.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/08\/pexels-photo-8828610-1024x1536.jpeg 1024w, https:\/\/interaction-bot.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/08\/pexels-photo-8828610-1365x2048.jpeg 1365w\" sizes=\"auto, (max-width: 1707px) 100vw, 1707px\" \/><figcaption>Credit: lara-jameson, Pexels License, via https:\/\/www.pexels.com\/photo\/toy-flags-pinned-on-world-map-8828610\/<\/figcaption><\/figure>\n<p>Can you change the mapping? In Interaction Bot the flag-to-language association is fixed. The configuration screen only asks for the channel, the activated switch, the sending mode, and auto-delete; there is no field to remap the French flag to German. What you can change is how the feature behaves per channel, and what the member can change is the flag they react with. Run <code>\/languages<\/code> in Discord to print the full supported list; the <a href=\"https:\/\/doc.interaction-bot.com\/faq\">FAQ<\/a> says the bot handles more than 100 languages.<\/p>\n<h2>How to enable flag translation step by step<\/h2>\n<p>The walkthrough below matches the <a href=\"https:\/\/doc.interaction-bot.com\/website\/dashboard\/flag-translation\">flag-translation section of the dashboard documentation<\/a>, and the complete <a href=\"https:\/\/interaction-bot.com\/blog\/discord-translator-bot-setup-guide\/\">setup guide on this site<\/a> covers the invite flow and every dashboard screen if you are starting from zero.<\/p>\n<ol>\n<li><strong>Invite the bot and open the dashboard.<\/strong> Go to interaction-bot.com and click Login or Go to dashboard. Discord shows the standard OAuth screen, then you pick your server and click Configure. The dashboard guide confirms every configuration page sits in the left navigation.<\/li>\n<li><strong>Open Translation, then Flag Translation.<\/strong> In the left menu, go to Translation and choose Flag Translation.<\/li>\n<li><strong>Add a configuration.<\/strong> Click Add a Configuration, select the Channel the bot should watch for flag reactions, and switch Activated on.<\/li>\n<li><strong>Open Options for the two behavior settings.<\/strong> Choose the Sending Mode (&#8220;Every time&#8221; or &#8220;Once&#8221;) and switch Auto Delete on if you want translations to disappear by themselves.<\/li>\n<li><strong>Save twice.<\/strong> Save the popup, then use the page-level Save button to publish the running configuration.<\/li>\n<\/ol>\n<p>Before you save, make sure the bot can view the channel and send messages, and that members have the Add Reactions permission, or reactions will register with no translation coming back.<\/p>\n<p>Roduz&#8217;s six-minute Interaction Bot walkthrough shows the same dashboard setup flow and command-based translation working side by side:<\/p>\n<p><iframe loading=\"lazy\" title=\"How to setup Interaction bot Discord | Translate | #roduz #discord #translate #translation\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/lqXAISyny_s?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<h2>When flag translation is the right mode<\/h2>\n<p>Flag mode shines in exactly two situations, and both come down to noise.<\/p>\n<p><strong>Busy open channels where auto-translate would be too loud.<\/strong> An always-on channel rule posts a reply near every message not already in the target language, which buries real conversation in a fast public channel and multiplies in rooms mixing several languages. Flag translation posts nothing until a member asks. The <a href=\"https:\/\/interaction-bot.com\/blog\/discord-translator-bot-setup-guide\/\">setup guide<\/a> describes flag mode as the lowest-noise option for channels where most members share a language but occasionally need help.<\/p>\n<p><strong>When only some messages need translating.<\/strong> In a support or community channel where ninety percent of the traffic is in one language and the odd message is in another, members react only to the messages they do not understand. Nobody else gets an unwanted translation, and one message can even collect several flags at once, so a post can be translated into French for one reader and Japanese for another, while an auto rule is locked to a single target language.<\/p>\n<p>Flag mode is the wrong tool when a channel is genuinely conversational across two languages all day. In a room where every other message is Spanish, a channel auto rule does the work without members having to react to everything, and the on-demand commands cover the rest.<\/p>\n<h2>Flag mode versus auto-translate versus \/translate<\/h2>\n<p>The three modes answer different questions, and healthy servers usually run a mix of them.<\/p>\n<div class=\"table-wrap\"><table>\n<thead>\n<tr>\n<th><\/th>\n<th>Flag translation<\/th>\n<th>Channel auto-translate<\/th>\n<th>\/translate command<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Who starts it<\/td>\n<td>Any member, one reaction<\/td>\n<td>The bot, on every message<\/td>\n<td>The member types the command<\/td>\n<\/tr>\n<tr>\n<td>Target language<\/td>\n<td>Chosen by the flag reacted<\/td>\n<td>Fixed per rule<\/td>\n<td>Chosen per call<\/td>\n<\/tr>\n<tr>\n<td>Channel noise<\/td>\n<td>One reply per reaction<\/td>\n<td>A reply near almost every message<\/td>\n<td>Only when used<\/td>\n<\/tr>\n<tr>\n<td>Setup needed<\/td>\n<td>Dashboard, per channel<\/td>\n<td>Dashboard rule, per channel<\/td>\n<td>None once invited<\/td>\n<\/tr>\n<tr>\n<td>Best for<\/td>\n<td>Open channels with occasional gaps<\/td>\n<td>Rooms where languages share one thread<\/td>\n<td>One-off messages and private translation<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p>Command-based translation is the lightest option because it needs no setup: a member types <code>\/translate &lt;message&gt; &lt;language&gt;<\/code> and gets an answer on the spot, and it is the fallback for channels that never enabled flag mode. Our <a href=\"https:\/\/interaction-bot.com\/blog\/translate-bot-discord-on-demand-commands\/\">on-demand translation guide<\/a> breaks down the command set, and the ephemeral app-menu Translate gives a private option visible only to you. Our <a href=\"https:\/\/interaction-bot.com\/blog\/connect-discord-to-translate\/\">guide to connecting Discord to translate<\/a> compares all four connection methods if you want the wider picture.<\/p>\n<h2>Testing flag translation on your server<\/h2>\n<p>Do this in a quiet test channel before you rely on it in a busy one.<\/p>\n<ol>\n<li><strong>Enable flag translation<\/strong> for the test channel with Activated on, and save the page.<\/li>\n<li><strong>Post a message in a language you recognize<\/strong>, then react to it with the flag whose translation you expect, for example \ud83c\uddeb\ud83c\uddf7 for French.<\/li>\n<li><strong>Verify the bot&#8217;s reply<\/strong> appears in the same channel and matches the message content.<\/li>\n<li><strong>Test the sending mode.<\/strong> In &#8220;Once&#8221; mode, add the same flag again and confirm no second translation arrives. In &#8220;Every time&#8221; mode, each new reaction produces a fresh output.<\/li>\n<li><strong>Test auto delete.<\/strong> Switch it on, react again, and watch the bot&#8217;s translation disappear after its delay.<\/li>\n<li><strong>Try a second flag on the same message<\/strong> so several languages coexist, and test a short or emoji-heavy message, since the <a href=\"https:\/\/doc.interaction-bot.com\/faq\">FAQ notes<\/a> those are the ones language detection most often misreads.<\/li>\n<\/ol>\n<p>If the bot stays silent, check in order that flag translation is Activated for the channel, the bot can send there, and the reacting member has Add Reactions permission.<\/p>\n<h2>The short answer<\/h2>\n<p>Flag translation on Discord means a bot translates a message into the language of the flag a member reacts with. It works per channel, it needs one dashboard configuration, and it is the lowest-noise translation mode available, because nothing is posted until somebody asks. Enable it on channels where most messages are already readable, let members page the translation in with a flag reaction, and keep auto-translate or \/translate for the rooms where every message needs a bridge.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Flag translation on Discord explained: react with a flag emoji and the bot translates the message into that language. How it works, which flag maps to which language, and how to enable it.<\/p>\n","protected":false},"author":1,"featured_media":103,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-102","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/posts\/102","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/comments?post=102"}],"version-history":[{"count":1,"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/posts\/102\/revisions"}],"predecessor-version":[{"id":108,"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/posts\/102\/revisions\/108"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/media\/103"}],"wp:attachment":[{"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/media?parent=102"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/categories?post=102"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/tags?post=102"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}