The Missing ExpressionEngine Multi-language Lingua Franca

Multi-language support in ExpressionEngine has a long and inglorious history.

For as long as I’ve been involved with the community (a good 5 or 6 years), there have been endless forum threads discussing the painful minutiae of implementing a multi-lingual site in ExpressionEngine, and questioning why life has to be this hard.

Being a creative bunch, the ExpressionEngine community has developed a range of solutions to this problem, typically using some combination of: global variables; PHP; custom add-ons; cunning.

All of which is a fine testament to the inventiveness of our community, but far from ideal.

In truth, I’m a poor guide to the fetid backwaters of building a multi-language site with ExpressionEngine. The few such sites I’ve built are very basic, and have thus avoided many of the more painful experiences documented in the forums.

That said, I do have a vested interest in the problem.

To me, people

Every time I build an add-on which could be used on a multi-language site, the lack of a standardised solution causes problems.

Just as the person building the site has the chore of picking through the available solutions, weighing up their numerous pros and cons, I have to decide which of the manifold alternatives my add-on should support.

An impossible choice

For publicly-released add-ons, this is close to impossible.

  • The site could identify the current language using: domains; sub-domains; sub-folders; language segments in the URL.
  • The per-language content could be organised using: separate Channels; the same Channel, with Channel Fields prefixed by the language code (en-title, es-title, de-title); a third-party solution such as Transcribe.
  • The site could rely on any number of third-party “language” add-ons.

Crumbly is an excellent example of this quandary.

Multi-language support was originally near the top of Crumbly’s to-do list. After many frustrating hours of research I decided the best solution was to release version 1, talk to Crumbly’s users about how they would like multi-language support to work, and take it from there.

Every single Crumbly user I’ve spoken to over the past 8 months has a different solution to the multi-language problem. As a result, Crumbly still doesn’t support multi-language sites.

What needs to happen

Multi-language sites are complicated; the sheer number of add-ons, hacks, and workarounds are testament to that fact. As such, I fully understand that there may be no such thing as a universal solution.

Nevertheless, some consensus regarding the preferred approach would be nice. An “official” EllisLab-endorsed approach would be better.

Such a standardised solution would make life much easier for all the poor souls tasked with building a multi-language site, particularly for the first time. Far more importantly, it would also make my life considerably easier.

Bend Craft to Your Will

Our newsletter helps you make the most of Craft. Join for free, leave any time.