Theme Translation

Initial Configuration

Monogram ships translation templates rather than finished translations, so the theme labels stay in English until you translate them or run a translation plugin. This page covers both routes, and where the files have to sit so a theme update does not wipe them.

#Two text domains, not one

Monogram splits its labels across the theme and the core plugin. A label such as by in a post meta row exists in both, because the theme prints it on the blog archive and the Elementor posts list widget prints its own copy. Translating only one leaves the other in English.

Theme

Text domain monogram. Template at wp-content/themes/monogram/lang/monogram.pot. Covers blog and archive pages, single posts, portfolio pages, breadcrumbs, search, comments and the 404 page.

Core plugin

Text domain jkd-core, in the JKD Theme Core Plugin. Template at wp-content/plugins/jkd-wp-monogram-core/lang/jkd-core.pot. Covers every Elementor widget, the Customizer labels and the load more responses.

Core plugin translations only load from version 1.3.7 onward. Earlier versions looked for them in a folder that does not exist, so a jkd-core translation on an older copy has no effect. Update the plugin first.

#Where the files belong

Put finished translations in the WordPress language folders, never inside the theme or plugin folder. Updates replace the theme and plugin directories wholesale, and anything saved there goes with them.

Translating File name Folder
Theme monogram-de_DE.po and .mo wp-content/languages/themes/
Core plugin jkd-core-de_DE.po and .mo wp-content/languages/plugins/

Swap de_DE for your own locale code, such as fr_FR, es_ES or pt_BR. WordPress loads these before the copies bundled with the theme, so they win.

#Choosing a method

Method Best for
Loco Translate Translating the theme into one language, from the dashboard
Manual .po and .mo files Translations you keep in version control
Weglot A multilingual site with automatic translation and a language switcher
TranslatePress A multilingual site you translate by clicking text on the page

#Translate with Loco Translate

Loco Translate reads both templates and writes the files for you, which makes it the shortest path for a single language.

Install the plugin

Install and activate Loco Translate from DashboardPluginsAdd New.

Start with the theme

Go to Loco TranslateThemes, pick Monogram, then click New language. Choose your language.

Pick the Custom location

Loco offers three locations. Choose Custom, which writes to wp-content/languages/themes/. The Author and System locations put the file inside the theme, where the next update deletes it.

Translate and save

Work through the strings and click Save. Reload the front end to see them.

Repeat for the core plugin

Go to Loco TranslatePlugins, pick JKD Theme Core Plugin, and run the same steps. This is the half that covers the Elementor widgets.

#Translate with .po and .mo files

For a translation you keep in a repository, edit the templates directly in Poedit or a similar editor.

  1. Open wp-content/themes/monogram/lang/monogram.pot.
  2. Create a new translation from it and save the pair as monogram-de_DE.po and monogram-de_DE.mo, using your own locale code.
  3. Upload both to wp-content/languages/themes/.
  4. Repeat with wp-content/plugins/jkd-wp-monogram-core/lang/jkd-core.pot, saving as jkd-core-de_DE.po and .mo in wp-content/languages/plugins/.

The file name has to carry the domain and the locale, in that order. monogram-de_DE.mo loads; de_DE.mo does not.

#Translate with Weglot

Weglot translates the whole site automatically and adds a language switcher. Monogram vendor/weglot.js integration keeps that switcher working across the theme page transitions.

  1. Install and activate Weglot from DashboardPluginsAdd New.
  2. Create an account at weglot.com and copy your API key.
  3. Go to WeglotSettings, enter the key, then set your original and target languages.
  4. Save. Weglot translates the site and the switcher appears for visitors.

#Translate with TranslatePress

TranslatePress lets you translate by clicking text on the page itself. Monogram vendor/trp.js integration handles its switcher during page transitions.

  1. Install and activate TranslatePress from DashboardPluginsAdd New.
  2. Go to SettingsTranslatePress and add your default and target languages.
  3. Open any page and click Translate Page in the admin bar.
  4. Click a text element, type the translation, and save.

#Set the site language

Whichever method you use, set the language WordPress itself runs in at SettingsGeneral under Site Language. This is what tells WordPress which .mo file to load, and it also drives dates: with the language set, month names arrive translated on their own.

Post dates follow the format at SettingsGeneral under Date Format, so a German site reads 31. Juli 2026 rather than an English-ordered date. To pin a different format for post meta specifically, use [[Appearance > Customize > Theme Options > Date Format]].

#Strings that come from somewhere else

Some text on the page is not the theme to translate.

  • Titles in the browser tab, when an SEO plugin is active. Rank Math and Yoast build those from their own title templates, which hold plain text you edit in their settings.
  • Anything you typed into the Customizer, such as the 404 page wording or the portfolio name. Type it in your language and it stays that way. On a multilingual site, WPML and Polylang String Translation pick these up.
  • Post, page and taxonomy content, which belongs to a multilingual plugin rather than a .po file.

#Right-to-left languages

Monogram loads a mirrored stylesheet on its own when WordPress reports an RTL language such as Arabic, Hebrew or Persian. Layout, alignment and directional elements flip, and there is nothing to configure.

Last updated

Was this article helpful?

FIND THE ONE THAT FITS YOUR PROJECT

Import a demo, swap the content, adjust the layout. Modern WordPress under the hood, fast even when the site fills up.