How to run a multilingual player community on Discord and beyond
The game shipped in eight languages. The Discord server has one general channel, in English, and a growing number of messages in Portuguese, German, and Korean that nobody on the team can read and nobody answers. Someone suggests adding a channel per language. Six weeks later there are eight channels, five of them with three messages each, and the two busy ones contain an argument nobody on staff has noticed for a month.
The mistake at the root of this is treating community language coverage as a formatting problem — as though the same community can be sliced into language-shaped pieces and continue working. It is a capacity problem. Every language surface you open is a promise about who will read it, how often, and what happens when something goes wrong there, and a promise you cannot keep does more damage than never having opened the channel.
This article is about deciding which promises you can keep, and structuring the community so the promises are visible to the people relying on them.
Decide what you are promising before you open a channel
An empty language channel is worse than no channel. A player who posts a question into a room labeled with their language reasonably assumes it will be seen. When it is not, they do not conclude that your staffing is limited; they conclude that they are second-class players, and that impression is much harder to reverse than the initial absence of a channel.
So define the level of service before opening anything, and there are really only three levels worth distinguishing:
- Broadcast only — official posts appear here, translated; nobody on staff reads replies. Posting is disabled or clearly marked as unread.
- Community space — players talk to each other here and help each other; staff presence is occasional and not promised. Reports have to be routed elsewhere.
- Supported — a staff member or trusted moderator who reads the language is present with a stated response expectation.
Write the level into the channel description itself, in that language, not into a rules page nobody opens. A player who knows a room is unstaffed will use it differently and will not feel ignored when nobody replies. The single most effective piece of multilingual community work most teams can do costs one sentence per channel.
It is also fine — often correct — to run different levels for different languages, and to change a level as the community grows. What is not fine is leaving the level unstated and letting each player invent their own assumption.
Channel structure: by language, by topic, or both
Splitting by language buys comfort: people talk more freely, and more of them talk at all. It costs critical mass. A channel needs a certain traffic level before conversation sustains itself, and below that level it reads as abandoned, which discourages the next person from posting. Splitting too early is the most common way to kill the very community you were trying to serve.
A practical rule is to split when a language can already sustain a conversation without you — usually visible as that language repeatedly appearing in the main channel and players spontaneously answering each other there. Until then, one main room with mixed languages tolerated is healthier than a ghost town with a flag on it.
Where volume does justify a split, resist mirroring your entire topic structure per language. Eight languages times six topic channels is forty-eight rooms, which is a maze for players and an impossibility for moderation. A better shape is a small, fixed set of language rooms alongside a global topic structure, so that screenshots, fan art, and speedruns stay in one place where they benefit everyone regardless of language.
One structure is worth deliberately not splitting: bug reports. If your team cannot read a language, a bug channel in that language is a queue that silently fills up. Keep a single reports channel with a fixed template, state which languages you can process, and be explicit that a report in any language is welcome but that the template fields matter more than the prose. Structured fields survive machine translation far better than free-form paragraphs do.
Moderator coverage is the real constraint
You cannot moderate a language you cannot read. This sounds obvious and is routinely ignored, because the risk is invisible until it is severe. An unread channel is where harassment goes unchecked, where spoilers sit unmarked before launch, where scam links and fake giveaways targeting your players survive for days, and where a coordinated brigade can form entirely in public without anyone official noticing.
There are three honest responses, and only three. Recruit moderators who read the language. Restrict the channel — slow mode, links disabled, posting limited to established members. Or close it. Leaving an unread channel with open posting is not a fourth option; it is the first option deferred until an incident forces it.
Volunteer moderators from the community are usually the realistic answer, and they need to be treated as a role rather than a favor. Define what they can do and what they must escalate. Give them a private channel with direct access to someone on the team, and answer there quickly — an escalation path that takes four days trains them to stop escalating. Tell them what they are not responsible for, because the failure mode with committed volunteers is that they absorb work until they burn out and leave, taking the coverage with them. Recognize the work publicly if they want that, and understand that in some jurisdictions the line between an enthusiastic volunteer and an unpaid worker has legal weight worth checking before you formalize anything.
How far to translate official announcements
Announcement translation is where teams quietly become inconsistent, and inconsistency reads worse to players than limited coverage does. A community that learns your patch notes appear in five languages will treat the sixth language's absence as neglect; a community told from the start that only certain categories are translated will not.
Decide by category rather than case by case, and publish the decision:
- Safety, outage, account, billing, and legal notices — translate into every supported language, without exception
- Patch notes — at minimum the summary of what changed; the full itemized list can stay in the primary language if you say so
- Event and seasonal content that affects play — translate, since players act on it
- Marketing beats, developer diaries, community spotlights — primary language is defensible
Machine translation for announcements is a reasonable tool with two hard limits. Label it, so a rough sentence is read as a rough machine sentence rather than as your studio writing badly in someone's language. And never use it unreviewed for anything involving compensation, refunds, account actions, legal terms, or an apology — those are exactly the texts where a subtly wrong nuance turns a fix into a second incident.
One practice pays for itself immediately: write the source announcement to be translated. Short sentences, no idioms, no wordplay in headings, no culture-specific references, consistent in-game terminology matching the glossary the game itself uses. The same discipline that makes a machine translation usable also cuts the cost and turnaround of human translation, and it makes patch notes easier to read in the primary language too.
Translation bots: what they actually do to a conversation
Auto-translation bots are the obvious solution and they do genuinely help people talk to each other. It is worth knowing what they do to the conversation before you install one server-wide.
Slang, sarcasm, and jokes are where they fail most visibly, and they fail by producing a fluent sentence that means something else — sometimes the opposite. Your own game terminology gets translated into ordinary words, so a player asking about an item called Ash reads as asking about ash. Quoted and re-translated text degrades with each pass. And mirroring every message into every language multiplies traffic to the point where the channel becomes unreadable in all of them.
The settings that tend to work: translate on demand, via a reaction or a command, rather than mirroring everything automatically. Keep a do-not-translate list of proper nouns and item names if the bot supports one. Keep bots out of your reports and support channels, where a fluent wrong translation is more dangerous than an untranslated message. And make it a standing rule that bot output is never the official answer — if staff replies through machine translation, that reply should be labeled as such, exactly like an announcement.
Your language communities are the best bug reporters you will get
There is one thing a multilingual community gives you that no vendor can sell you: hundreds of native speakers playing the shipped build in context, every day, permanently. They will find translation errors your review pass could not, because they are seeing lines in situations your testers never reached.
Capturing that requires a channel or form with a template, because a free-form report that says the German is weird is unactionable, and the player who wrote it will not be asked to elaborate in time.
# translation report template — pin this, and translate the template itself Language: de Where (screen): Settings > Audio, tooltip on the master volume slider What it says: (copy the exact text, or attach a screenshot) What is wrong: wrong term / unnatural / cut off / not translated / other Suggested fix: (optional — your wording, if you have one) Build version: 1.4.2 Platform: PC
Triage what comes in, because three different things arrive through the same door. Actual errors — wrong meaning, wrong term, untranslated, truncated — go to the fix list. Preferences, where a player would have phrased it differently but nothing is wrong, get acknowledged and set aside, unless several unrelated players raise the same line, at which point it stops being a preference. And a meaningful share turn out to be display bugs rather than translation bugs: text cut off by a UI element, a missing glyph, a line breaking in the wrong place. Those belong to engineering, and misfiling them as translation issues means they get sent to a translator who cannot fix them.
Then close the loop in public. Post, in that language's space, when a batch of reported fixes ships, and name the version. This is the entire mechanism that keeps reports coming: a community that sees its reports land will keep reporting for years, and one that reports into silence stops within a month and starts writing the same complaints into store reviews instead, where you can neither reply usefully nor ask a follow-up question.
Finally, read the aggregate rather than only the individual reports. Ten complaints about different strings in one language usually means one systemic cause — a glossary that was never applied, a font missing characters, a UI that was never tested at that language's text length. Fixing the cause is cheaper than fixing ten strings, and it is the only version of the fix that stops the eleventh report.