Install Proxmox VE for a client, a parent, or a coworker who isn't comfortable in English, and the first thing they'll ask is why every menu says "Datacenter" and "Storage" instead of something they can actually read. It's not a bug. Proxmox VE ships in English by default, but the web interface has been translated into more than 20 languages by community volunteers, and switching to one takes about two minutes once you know where to look.

The tricky part isn't the switch itself. It's that Proxmox actually gives you three different places to change the language, and each one affects a different scope: your browser session only, your personal account, or every single person who ever logs into that server. Pick the wrong one and you'll either wonder why the setting "didn't stick," or you'll accidentally switch the login screen to German for every admin on the team.

This guide walks through all three, when to use each one, and what to do if translations are missing or the change doesn't seem to take.

What You Will Learn

  • The difference between a session-only language change, a per-user change, and a sitewide default
  • How to switch languages from the login screen without touching any configuration
  • How to set your own permanent language preference in My Settings
  • How to set a default language for every user with the language key in datacenter.cfg
  • Why some menus stay in English even after you switch, and what that means
  • How language differs from keyboard layout, which is a completely separate setting

What Is This Feature?

Proxmox VE's web interface is built with Ext JS, and every label, button, and tooltip in it comes from a translation file rather than being hardcoded in English. Those files live in a package called pve-i18n, maintained separately from the main pve-manager package and updated through a community translation platform. When a new Proxmox VE release adds a feature, the English strings ship immediately, and translators catch up over the following weeks or months. That's why you'll occasionally see a French or Japanese interface with one or two stray English labels mixed in. That's not a misconfiguration on your end, it's just a translation that hasn't landed yet.

Don't confuse this with keyboard layout, which is a separate setting controlling what character actually appears when you press a key inside the installer or a noVNC console. Language only changes what the interface says, not what your keyboard types. If your "z" and "y" keys are swapped inside a VM console, that's a keyboard layout problem, not a language one, and the fix lives in a different part of Proxmox entirely.

Why Would You Use It?

Most solo homelab users never touch this setting. If you're the only one logging in and you read English fine, there's no real reason to bother. But the moment more than one person uses a Proxmox host, the calculation changes.

A few situations where it actually matters:

  • You manage a server for a small business where staff who aren't fluent in English need to check backup status or restart a VM themselves.
  • You're running a NAS-and-VM box for a family member and don't want to field "what does this button do" calls every week.
  • You're teaching a class or writing documentation for a non-English-speaking audience, and screenshots need to match what your students will actually see.
  • English isn't your first language, and reading technical menus faster in your native one just makes day-to-day admin work less tiring.

Honestly, if you're the primary admin and you're comfortable pasting commands from English-language forums and documentation, I'd leave your own account in English even if you switch the sitewide default for everyone else. It's a lot easier to match what you see on screen to what a forum post describes when both are in the same language.

Prerequisites

You don't need much for this one. Here's what to have ready:

  • A working Proxmox VE 8.x or 9.x installation you can log into (this guide was checked against 9.2)
  • A modern browser (Firefox, Chrome, or Edge) — old cached cookies can occasionally hold onto a stale language choice, so know how to clear cookies for one site if needed
  • Root or another account with access to the web GUI, for the login-screen and My Settings methods
  • SSH or console access to the host with root privileges, only if you want to set a sitewide default through datacenter.cfg

None of these steps touch your VMs, containers, storage, or cluster configuration. Worst case if you get it wrong is a confusing menu, not a broken server.

Step-by-Step Tutorial

Method 1: Change the language for just this session (login screen)

This is the fastest option and doesn't require logging in first.

  1. Open your Proxmox VE web interface at https://your-server-ip:8006.
  2. On the login screen, look for the Language dropdown near the bottom of the login box, below the username and password fields.
  3. Select the language you want and log in as usual.

Your browser remembers this choice the next time you visit that same Proxmox host, so in practice this ends up being "sticky" for that browser even though it isn't tied to your Proxmox user account. Switch browsers or clear cookies, and you're back to whatever the sitewide default is.

Method 2: Set your own permanent preference (My Settings)

This is the right choice if you want your own account to always load in a specific language, regardless of which browser or computer you log in from.

  1. Log into the Proxmox VE web interface.
  2. Click the gear icon in the top-right corner, next to your username (something like root@pam).
  3. Select My Settings from the menu.
  4. Find the Language dropdown, next to the Color Theme option.
  5. Pick your language and close the dialog. The interface reloads immediately with the new language applied.

These are locally stored, per-user preferences, the same mechanism that controls dark mode. They travel with your Proxmox account rather than your browser, which is the opposite behavior from Method 1.

Method 3: Set a sitewide default for every user (datacenter.cfg)

Use this when you want new logins, or anyone who hasn't set a personal preference, to see a specific language by default. This is the one to reach for on a shared family server or a small business box where most people will never open My Settings.

  1. SSH into your Proxmox VE host, or open the Shell from the web GUI (click your node, then Shell).
  2. Check the current contents of the config file:
    cat /etc/pve/datacenter.cfg
  3. Open it in a text editor:
    nano /etc/pve/datacenter.cfg
  4. Add a line setting your default language. For German, that's:
    language: de
    Save with Ctrl+O, then exit with Ctrl+X.
  5. If the change doesn't show up right away, restart the web proxy:
    systemctl restart pveproxy

Give it a few seconds, then reload the login page in a private/incognito window (so you're not seeing a cached cookie from Method 1) to confirm it's showing your new default.

Commands Explained

A quick rundown of what each command in the sitewide method actually does:

  • cat /etc/pve/datacenter.cfg — prints the current cluster-wide configuration file so you can see what's already set before you change anything. This file lives on the Proxmox cluster filesystem (pmxcfs), so if you're running a cluster, editing it on one node applies it everywhere automatically — you don't need to repeat this on every node.
  • nano /etc/pve/datacenter.cfg — opens that same file in the nano text editor. Use vi or any editor you're comfortable with; nano just tends to be friendlier for people who don't edit config files often.
  • language: de — the actual setting. This isn't a shell command, it's a line inside the config file itself, written as key: value. The allowed values are two-letter (or occasionally longer) language codes: ar, ca, da, de, en, es, eu, fa, fr, he, hr, it, ja, ka, kr, nb, nl, nn, pl, pt_BR, ru, sl, sv, tr, ukr, zh_CN, and zh_TW.
  • systemctl restart pveproxy — restarts the pveproxy service, which is the process serving the web GUI on port 8006. This is safe to run at any time; it has no effect on running VMs, containers, backups, or cluster membership. The worst that happens is your browser tab briefly loses its connection to the GUI for a second or two while the service comes back up.

Here's a comparison of the three methods, since it's easy to mix them up:

MethodWho it affectsHow long it lastsWhere it's stored
Login screen dropdownJust this browserUntil cookies are clearedBrowser cookie
My SettingsJust your Proxmox user accountPermanent, follows your login anywhereYour PVE user's local settings
datacenter.cfgEvery user without a personal preferencePermanent, until edited againCluster-wide config file

Common Errors

A handful of things trip people up here, and none of them are actually errors in the "TASK ERROR" sense — more like small surprises.

Typing an invalid language code is the most common one. Write language: eng instead of language: en, and Proxmox VE will typically just ignore the line and keep serving English, without any warning that it did so. If your sitewide default doesn't seem to apply, double-check your two-letter code against the list above before assuming something else is broken.

The second surprise is scope. Because datacenter.cfg lives in the shared cluster filesystem, changing it on one node changes the login page for every node in the cluster, not just the one you're sitting at. If you manage a multi-node cluster with other admins, it's worth a heads-up in your team chat before you flip the default, so nobody thinks their account got hacked when the login page suddenly speaks Portuguese.

Third, people sometimes set the sitewide default and then get confused when their own account still shows English. That's expected if you'd already picked a language in My Settings at some point — a personal preference always wins over the sitewide default for that account. Clear your own My Settings language choice back to the default if you want to actually see what new users will see.

Troubleshooting

If you change the sitewide default and the login page still looks the same, open a private or incognito browser window before assuming it failed. Regular windows often carry a language cookie from a previous visit, and that cookie takes priority over whatever you just set in the config file.

If some menus translate and others stay stubbornly in English, that's almost always incomplete translation coverage for that release, not something wrong with your setup. Newer Proxmox VE features get English strings on day one, and volunteer translators fill in the gaps over the following weeks. There's no local fix for this beyond waiting for a pve-i18n package update, or contributing a translation yourself through the project's Weblate instance.

If a language with non-Latin characters (Chinese, Japanese, Korean, Hebrew, Arabic) shows up as empty boxes or "tofu" squares instead of readable text, that's a font rendering issue in your browser or operating system, not a Proxmox bug. Installing a font package with proper CJK or RTL glyph support on your client machine — the computer you're browsing from, not the Proxmox host — almost always fixes it.

And if you switch to a language you can't actually read and panic slightly, don't worry: the login screen dropdown is always in the same spot, so you can switch back the same way you switched in the first place. As a last resort, SSH in and set language: en in datacenter.cfg, then restart pveproxy — that resets the sitewide default back to something you can navigate.

Best Practices

Set the sitewide default to match whoever will use the server day to day, and let your own admin account keep a language you're fastest in for troubleshooting — usually English, since that's what most Proxmox documentation, forum threads, and error messages use. Mixing languages between "the server's public face" and "your own login" isn't messy, it's actually the sensible split.

Re-check translation coverage after major version upgrades, especially a jump like 8.x to 9.x. New features tend to outrun translations for a while, and a menu that was fully translated last month might show a few English labels after an update until the language pack catches up.

If you're managing a server on behalf of someone else — a client, a family member, an employer — write down which language you set as the default somewhere outside Proxmox itself. A README, a ticket, a sticky note in your password manager. It saves the next admin (possibly future you) from a confusing few minutes during an actual incident.

Frequently Asked Questions

Does changing the GUI language also change the shell or CLI output?

No. This setting only affects the web interface. SSH sessions, qm/pct command output, and system logs follow the underlying Debian locale of the host, which is a completely separate configuration.

Will this break anything on my server?

No. It's a display-only setting with no effect on VMs, containers, storage, networking, or cluster behavior.

Can two different admins use two different languages on the same server?

Yes. Each Proxmox user can set their own language in My Settings, and that personal choice overrides the sitewide default for their account only.

Is every language fully translated?

No. Coverage varies by language and by how recently a feature was added. Widely used languages like German, French, and Chinese tend to be closer to complete; newer or less common ones may lag behind.

Can I add a language that isn't on the list, or fix a bad translation I noticed?

Yes, through the project's community translation effort described on the Proxmox VE wiki's Translating Proxmox VE page. It's a volunteer process, not something you configure locally on your own server.

Conclusion

Three places, three scopes: the login dropdown for a quick one-off, My Settings for your own permanent preference, and datacenter.cfg for everyone else who logs in after you. Once you know which one you actually need, the change itself takes less time than reading this sentence took. It's a small setting, but for whoever's staring at that screen every day, it's the difference between a tool that feels usable and one that feels like it was built for someone else.