Translations don't work

If you’re looking for help, please provide information about your environment. If you delete this template and don’t provide any information, your topic will be automatically closed.

If you aren’t running the latest version of Ghost, the first thing we’ll ask you to do is update to the latest version of Ghost.


  • How was Ghost installed and configured? On a VPS (Ubuntu 22.04) following the instructions from Ghost documentation
  • What Node version, database, OS & browser are you using?
    Node version: 16.20.2
    Database: MySQL

OS: Windows 11
Browser: Brave

  • What errors or information do you see in the console? None
  • What steps could someone else take to reproduce the issue you’re having?

I’m currently facing the following issue: I’ve generated translations for my template, and everything works perfectly on my localhost. I can easily switch between languages like French, Italian, or English. However, when I try the same on the VPS, changing the language has no effect even after restarting Ghost.
The “locales” folder is located within the theme directory, and I’ve adhered to the documentation’s guidelines for setup.

Welcome to Ghost!
Great looking site. Here are a few things to try:

Run Ghost as ghost run -D - that triggers fairly verbose logging to console and may toss you a useful error. [If the site is in production and that’s not a good option, then definitely comb through your error logs, probably located in /content/logs) - there might be a hint there.

Check that the locales folder and everything within are owned by the ghost user and group. (ls -ltra should show ghost.ghost , or whatever you set up your ghost user as)

I visited your site, and I do see some evidence that you’ve got your language set correctly, i.e. here’s your date string:

Make sure that you’ve got the theme you uploaded with the translations actually activated. (I can’t tell you how many times I’ve forgotten to activate a theme I had deployed with Github and then wondered why I didn’t see my changes, but that number is NOT zero.)

I might also have suspected that you’d missed a few strings with the translation, but since you say it looks right on localhost, that’s not the problem here!

1 Like

Oh wow, I was in a bit of a bind! I’m using Rollup.js and it totally slipped my mind to include the locales folder when I ran ‘npm run zip’. Thanks a lot, mate! :smile:

1 Like

Glad you solved it. “Check that the locales folder exists” wasn’t quite on my list, but I’m glad you’ve got it working now! :)