I tried to make WordPress multilingual without plugins — and it nearly broke my site.
So I built a lightweight alternative.
I’ve been running a personal self-analysis website for a while, and eventually needed to support multiple languages.
Naturally, I started with the major multilingual plugins… and spent weeks fighting:
layout breaks
slow performance
unexpected conflicts
huge settings panels I didn’t want
the fear of updating anything
At some point I realized I was spending more time fixing the tool than building the project.
So I took a different path:
a tiny JSON-based structure that sits inside a child theme, requires no plugins, and doesn’t touch your existing design.
Over time I expanded it into a repeatable structure I could reuse across pages and languages.
Before I keep developing it further, I’d love feedback from people here:
• Does this approach make sense?
• Is a zero-plugin setup actually useful?
• What would you expect from something like this?
• Should it stay minimal, or include optional helpers?
I’ll drop a link in the comments to avoid cluttering the post.
You don’t need to buy anything — I’m just looking for honest critique from builders who’ve dealt with i18n pain in WordPress.
Thanks for taking the time,
The "fear of updating anything" is so real. Had the same experience with WPML years back where one plugin update nuked half my language switcher CSS. JSON in a child theme sounds way more maintainable.
Thanks, Jack — totally feel you on that.
I also had multiple cases where a multilingual plugin update broke CSS or HTML in ways that were hard to trace.
That’s exactly why I ended up moving translations into JSON inside a child theme — no hidden magic, just predictable files.
I’ll share my folder structure and example JSON soon.
Appreciate you taking the time to comment!
Looking forward to seeing it! The predictability factor is huge - knowing exactly where everything lives makes debugging so much easier when something goes wrong.
This is a really smart approach. WordPress multilingual setups get bloated fast, so a lightweight JSON-based structure actually makes a ton of sense, especially for people who just need a clean, predictable way to manage translations.
I would be interested in seeing how you organize the JSON and how reusable the pattern is across different page types. Keeping it minimal feels like the right direction as long as it stays easy to maintain.
Nice work. Curious to see where you take it.
Thanks! I kept the JSON structure minimal so it's easy to reuse across different page types without adding plugin-like complexity.
I shared a bit more detail in a follow-up comment below in case it's helpful — just a lightweight breakdown of the structure I'm using.
Appreciate your interest!
Here’s the reference link:
https://oraquest.gumroad.com/l/ilmfis