how to build a multi-lingual site.

Permalink 4 users found helpful
so the c5 user interface is being translated to more languages than I can count right now. There's a lot of legwork there, but the underlying architecture is figured out.

I want to lead a discussion on how to approach multi-lingual site /content/ and what we can add in time to make that easier.

The biggest question that jumps in my mind when people say "we need a multi-lingual site" is "will every page exist in every language?" as soon as you get any wavering on that, I tend to think you need two separate trees in your site. So under Home you have English and Spanish and you can just copy assets and pages back and forth between the two as needed. This gives you all the flexibility of changing a navigation around a bit for one side and not the other, and lets you keep both sites complete, while translation happens. We did exactly this for the US and UK versions of - a little URL trickery and the .UK domain points to where it needs to and the .COM domain points to where it needs to and its simply a matter of choosing the US or UK version of the Theme.

true multi-lingual content would be different than that I guess however. In a truly multi-lingual system you'd have a /version/ of each page for every language. I suppose you'd need a part of the dashboard to set these up, and I suppose we'd basically hack the versioning system to pull it off. now every cID would have a multidimensional array of versions, a whole series for each language. The advantage here is your site architecture exists in only one place. The down side is, your site architecture exists in only one place. If you write something in english and you haven't translated it to spanish yet, you'd have to deal with that.

I suppose you could just hide pages that didn't have the language content for the section you were "in". I suppose you could define a fall back path.. So if I'm in German and no German content exists, try French. If no French exists, try English, etc.. This sounds complicated to build, prone to a lot of bugs and weird behavior, and not a very intuitive experience for the site owner. .. You'd also have to do translations for every block, page name, all the meta attributes - it'd be a big problem and impact the UI a LOT..

So the question is, does the "true" multi-lingual approach sound appealing to anyone? sounds like a nightmare to me and since we've already got a huge list of things to do, this is towards the bottom of it. If there are approaches, problems, or priorities I'm not seeing - tell me.

View Replies:
macmac replied on at Permalink Reply
I my opinion the multilingual backend of c5 is the important topic - and this is possible now (I did not test it so far ;-). So I can create a true German site and have German user as administrators/editors etc. So every block which prints out content directly should be translateable.

The idea of a multilingual site is compelling (I like your idea - German, if not available goto French - lol - most German people do not speak any French for sure). But it is a lot of work to maintain this, translate everything etc. But it would be an interesting feature (I would say nice to have), if you could switch between languages while you are creating content (e.g. first English, than a copy of this text for translation into German etc.).

I had two projects where I used some kind of a php proxy which makes every page area translateable via an AJAX inline editing. This allowed a translation without interacting with the backend server and enabled translators to do the work without the need to bother with the content presentation (1:1 solution).
Remo replied on at Permalink Reply
what we have right now is okay for small pages, I'm fine with that. But for bigger and more complex pages, what you write would all be nice.

I currently have the problem, that I have a page (german, english). On the first page (Home Page) I would like to have a page that looks completely different from the rest. A logo and two links (de,en)

Having a page type for that is ugly since it would be used only for that single page. I wasn't able to find a way, to use a single page as "Home Page".

Is there already a way to that and if not what do you think about that feature?
Remo replied on at Permalink Reply
About the fall back path - I don't think that is really useful, at least, I never had a project where I would wanted such a feature!

I prefer an "auto-hide" function. I create a page in the english structure, the pages gets copied to the german structure but is hidden by default. This would be nice, because it's easier to translate if you don't have to open a second window.

I don't think it's a good idea to change the way cID behaves. This sounds like a real nightmare... It might be enough, if you would like the pages together?

I create a page "Contact" (en), that automatically created a page "Contact" (de) and creates a link between those two. Remember, I still should be able to rename the page (Contact --> Kontakt). I like having the most important keyword in the url and not only in the content and meta tags...
arjan replied on at Permalink Reply
(erroneously replied to a comment rather than to the post itself -- moved at a later time)
Tarraq replied on at Permalink Reply
To make the tree as you write, and then make a custom field, giving the language.

For instance is it google-fu to define the language of the site, like the "da" for Danish below:

<html xmlns="" xml:lang="en" lang="da">
<meta http-equiv="content-language" content="da" />
[rest of code]

- Michael
tom replied on at Permalink Reply
Hi there. I am a person of a team Japanizing concrete5. We already complete Japanization of concrete5 soon.

We want to commit our result for your source. Therefore one in us hopes for participation as a developer for your project as a representative.

This is the first step to complete Japanization of concrete5.

We solve an original problem in not only simple translation but also the Japanization.

We want to concrete5 with the hope of better.Therefore we are by little, but want to submit a problem.

However, we do not understand concrete5 so as to be able to submit a problem.
We want to let Japanization complete for the time being.

ScottC replied on at Permalink Reply
Tom, wanted to say thanks for the post.

I can't personally speak on behalf of the c5 team, but I wanted to thank you for your dedication to the concrete CMS and making it multi-language.
gnud replied on at Permalink Reply
I work in a relatively small country (Norway), so most of our clients want to have content in several languages. Adding content in several languages is no problem today - Having one page type for each language for UI texts, and a couple of custom views, is fine too.

But what is really needed is some link between the different pages, saying that "these are the same page, in different languages".

Now there are several ways to accomplish this, of course. But I think that fleshing out _one_ design, and getting that into the core Concrete 5 if possible, would be a beneficial to (almost) everybody.
ong replied on at Permalink Reply

I have created a multi-lingual site for a client: It's possible to switch from every single page of one language (german) to another (english). At first this is no problem, but while the site grows there might be different things needed for different languages.
Therefore I think it would be better not to have the "real multi-lingual" possibility described by Franz. Instead: Let the user choose a language (for example by flag/language name). IF a user wants english - well, he won't care about any german on the site - and he might come to a domain by searching google in a language that he expects. If he searches for english words he will most likely want an english site. And even if he discovers that the site is available in german as well - he can always make a switch.
Actually the different language addresses a different audience. It's not a neccesity to have the same pages for all languages.
If a company want to have this kind of setup - they can always create this themselves (even with the possibilities we have right now).

One thought about the previous post. Concerning links to another language: The developer could insert some PHP which adjusts the language string.

aeon replied on at Permalink Reply
My idea of multilanguage site is quite simple. Let's say we have two languages, each language has two page.

Home page
|__First language
| |__First page First language
| |__Second page First language
| |__Third page First language
|_ _Second language
|__First page Second language
|__Second page Second language

I have block Header Nav at top of the page. What I would like is changing of autonav block that link to "First language" is in fact link to "First page First language".

Can you help me?

In the second stage I would like to have:

If I am on "Second page First language" link on "Second language" goes to "Second page Second language".

What about if I am on "Third page First language". Link on "Second language" should goes to "Third page Second language" if exist. If not exist go to "First page Second language".

flakerimi replied on at Permalink Reply
Home page
| |__First page EN
| |__Second page EN
| |__Third page EN
| |__First page DE
| |__Second page DE
| |__Third page DE

The only problem is to me (maybe) that on main navigation, when I choose to get pages from second level. and When I click on page item, nav disappears. Like if I want to see Second Page EN, Navigation will be empty, Now how to tell Nav Block to get only pages of level 2 and not to kill them if I am beneath that level?

This could help if we can do that.

EDIT: ok I figure it out, You have to change Header Nav Block properties to behave on different pages, Which is pain in the ass.

I think Header Nav block need some modification, like to say it to stick where I put it. SO, get All sub pages from Level 2 and thats it, don't misbehave :).
jasonlfunk replied on at Permalink Reply
I think an easy solution is this:

Create the ability to define multiple root nodes in the site map that represent the different languages. Which C5 actually uses as the root node would be defined by a session variable.

-Home - En
* Page 1
+ Page 2
* Page 3

+Home - Tr
* Page 1
+ Page 2

The trees with different root nodes could be different which would solve problems with differences in content. Pages could be aliased as well between root nodes.

A module would need to be created that would allow switching the SESSION language.

They could also be referenced absolutely if needed.

It would solve my need for a multilingual site. I am a PHP developer so I am going to start looking at the code, but the source is big - so it might take awhile...
shenn replied on at Permalink Reply
you can do the following to have multiple sites. .com / .net

add in the dispatcher.php @ line 117 the following (after the else statement):

switch($domain=$_SERVER['HTTP_HOST']) {

case($domain == ""):
$page_path = "/com";

$page_path = "";
$c = Page::getByPath($page_path . "/");

comment this line:
$c = Page::getByID($req->getRequestCollectionID(), false);

you can make a case for multiple domains... the ony thing now has to be a rewrite rule so that "com/" will dissapear in the adres bar...
arjan replied on at Permalink Reply
I recently worked with a huge international focused site (non-concrete5) that required a fallback path. Though hosted from the Netherlands, the site did not use any Dutch but only English, Spanish and French. In other words: many visitors would not see their own native language to start with.

The site had many pages for specific countries, which could very well exist in only a single language. And as this site also allowed for user-generated content, which most often would only be available in one language as well, the visitor should not be left oblivious about the existence of that content, just because it happened to use a different language. Even worse: sometimes the language indicator would be wrong anyhow. :-)

As for Google: it would really be nice if search engines could know that some pages are actually the same, just using different languages.

(Now, the real problem comes when using Arabic or other right-to-left languages, in combination with left-to-right scripts. This would require to switch to a different layout when switching languages...)
Fernandos replied on at Permalink Reply

The backend is not cool at the moment for i8n and l10n, but this is a very complex topic that is also dependant on many other factors, like block translations, super-scaled sites, ui-design et cetera.

However this needs some discussion with the core developers and yes there is already some progress. :)

But please hold on: This is nothing that can be done in "2 months", but it will be there in 2010. There is no releasedate so, you don't need to ask.

I'll keep you updated, if there is something new.
Fernandos replied on at Permalink Reply
Don't get me wrong. I've coded it and use it on my clients but this doesn't mean it is production safe for the general public yet. btw I'm not a c5 team member.

Multilang is a hard topic, the c5 team works hard on it trust me! I've provided my code and ideas to help the community :)

keep the planet a safe place.

Check my multilingual c5 site:
orange73 replied on at Permalink Reply
I think it's a good idea to have an multilanguage management because multilanguage website is asked all the time.

I think you must look at SilverStripe language system.
Chacapamac replied on at Permalink Reply
No true multilingual possibility mean Don’t waist your time here (for me) and few millions of other serious site builders.

No excuse or bypass on this one...

Tell me now, before I waist my time here?
frz replied on at Permalink Reply
Chacapamac replied on at Permalink Reply
To keep up with the rest, you need to be able to translate, all core files and all addons— EVERYTHING. No half Half.

[b]And tell me I’m not seeing this, I probably don’t understand what you mean by that mumber?????[/b]

[quote] We are likely to price the commercial side high for a typical add-on, but low for enterprise software. $2,500 sounds about right today. [/quote]

I look at the ad-on last link and what popup that number again.....

I make multilinguals top notch complete Joomla web (even with ecommerce) site for less than 2,000 bukaroo.

I don’t care if you have the best cms of all, numbers like that are ridiculous...

Remember, I’m not here to trash, this is constructive remarks, and I hope take as such.
frz replied on at Permalink Reply
The commercial add-on would really be geared towards people who are building sites with a large party of content contributors. To an enterprise that is translating their marketing site into a dozen languages, that's really not a huge number.

CMS solutions like Teamsite have license fees in the six figures, with recurring yearly fees too. MS Sharepoint is $20k/year base license. The leading CAT tool on the market has a license fee well over $2k.

I'm sure anyone can do anything for any amount of money if they want to. I'm not really interested in offering the cheapest solution to every problem. Regardless, we were pretty clear that the majority of the improvements would be available for free.

Numbers like that are not ridiculous, but thanks for the constructive remarks. We will certainly want to price this at a point where people who we can support buy it.
Chacapamac replied on at Permalink Reply
Just keep my number in mind- With Joomla I can build a complete multilingual site for less than 2K — My site are top notch, completly personalized with integrated Firewall, Top notch editor, gallery with comment system, sitemap, SEO, and lot more...

The pro version of the multilanguage component (Joomfish) is $119 euro for the gold membership full multi-domains license (with all upgrades) for one year. I see no limitation in size or capacity to my sites to drive extremly complexe corporate sites as they already do.

Even the free membership of the multilingual tool Joomfish is a full multi-domains license (with all upgrades) and have no limititation in it’s multilingual ability. You just have more bells and wistles from the DEV.

Just to let you know.
Chacapamac replied on at Permalink Reply
Sorry I’m out

How can I said to my client
You want a Concrete multilingual site it will cost you $ 2000 on top of the 2 to $3.000 for the construction of your site. When I can offer a free Top Notch solution with Joomla.

Completly ridiculous...

I come back when you guys starting making sens....

Maybe I’s something I dont really understand....
frz replied on at Permalink Reply
Uhh. Were talking about a perfectly fine free solution with an optional set of tools for enterprise

Ya know, it does actually cost money to write software, so you'll have to excuse us if we sell some of it while we continue to give the majority away for free

Best wishes
Pecked out on an iPhone
andrew replied on at Permalink Reply
In case you don't read to the end of Franz's roadmap link: multilingual additions are coming very, very soon. They will require 5.4.2; their specific enhancements are already available in the public version of concrete5 available for download on

There will be two add-ons available, one free, one commercial. The free add-on will do a LOT to make running a multilingual site easier than it ever has been in concrete5, including keeping track of pages and language associations, switching between language sections, etc... The commercial add-on will make the actual act of translating such a site easier.
rainingmirrors replied on at Permalink Reply
What is very, very soon? Because multilingual functionality is really important on my decision, whether or not to use concrete5 for my upcoming projects.

And, if i understand correctly, multilingual functionality will require concrete5 5.4.2 and an add-on, which will be available at the marketplace?
frz replied on at Permalink Reply
Very soon = August.

Yes, you'll need 5.4.2.
There will be two add-ons, one free that does what you must have, and
one that costs something that adds ease of use tools for a larger

best wishes

Franz Maruna
zoinks replied on at Permalink Reply
I scanned these posts looking for the GREEN one (answer). Apparently, this final post is the answer? Plugin available this month?

I have a client who wants a GLOBAL site with multi-lingual support and wants the language to default to the appropriate language for that region. UAE and Hong Kong were mentioned. (Interesting challenge since I don't know squat about designing for Asian languages... or UAE, for that matter.)
zoinks replied on at Permalink Reply
duplicate post deleted
zoinks replied on at Permalink Reply
hi dere.

please to announce when this add-on is ready on this here thread please. you will have much success with initial sales.
frz replied on at Permalink Reply
Here ya go! Just launched it.

Free option:

Not so free option:

best wishes

Franz Maruna
gour replied on at Permalink Reply
Hiya Franz,

> Here ya go! Just launched it.

Let me first thank you for offering free i18n add-on.

I also support that you sell enterprise one for some bucks, but, in my case, I'm not interested for a free tool to help me translate the content, but to translate Concrete5 core & add-ons without fiddling with myGengo, poEdit, submitting *.mo etc. which, at the end, should help making C5 more attractive to wider audience.

What is the recommended procedure for translationg core & add-ons?

Is this still relevant?


p.s. Please, check Web2py framework where one can do all translation work within web-based IDE running on localhost.
Chacapamac replied on at Permalink Reply
You guys are still in that ridiculous price to have a multilingual site ????

Don’t want to rain on the party, but multilingual is a most, not an option for any serious CMS.

If I understand well, As a web designer, you want me to charge my customer $1700 to add a serious complete (It is complete?) multilingual solution with Concrete on top of the habitual $1700 I charge for a small top notch bilingual site (made with Joomla).

This is insane....

Maybe I don’t understand...

Help me here....
gour replied on at Permalink Reply
>Don’t want to rain on the party, but multilingual is a most, not an option for any serious CMS.

I agree.

>If I understand well, As a web designer, you want me to charge my customer $1700 to add a serious complete (It is complete?) multilingual solution with Concrete on top of the habitual $1700 I charge for a small top notch bilingual site (made with Joomla).

Afaict, you can use free i18n add-on and do translation.

If you watch 'enterprise' videos, you can see that it is meant to help translating the site, but it's possible to do it manually by making copy of pages and then translate.

As far as I'm concerned, I'd just like to have free/add-on (maybe language manager will have it in the future) solution for providing translation for Concrete5 core and installed add-ons and NOT for the content.
frz replied on at Permalink Reply
Ya know there is a totally free add-on that is linked to from the
enterprise international page that lets you do anything you need to run a
multi-lingual site.

If you've got a team of translators involved and you need the additional
workflow of a centralized tool to manage their efforts, the
internationalization enterprise add-on makes sense for your needs, and
probably your budget as well.

If we're going to call me insane for selling software, why are we saying
I'm insane for pricing a group workflow management tool for translating
sites at $1750? The leading CAT tool on the market (Trados) costs $2k and
it doesn't actually integrate with any CMS at all. There are other CMS's
out there that aren't as nice as concrete5 and cost $20,000+ a year. Surely
I'm "insane" for giving concrete5 away for nothing under the MIT license in
the first place, no?

Regardless, here's a special offer to let you pick up enterprise
internationalization at half price:

Hope that helps.

best wishes

Franz Maruna
mhzpower replied on at Permalink Reply
I tried the Internationalization block with language manager and it works but only for pages under respective language. All system pages like login, register, profile...etc and even eCommerce remain in the default language.

Is there any way to make those follow the user's language choice?
Chacapamac replied on at Permalink Reply
Back in town.
I start to see the light and understand a little more the proposition here. I think, the bes way it’s for me to install a demo and just try it.

Now let’s go see those instruction to install my first Concrete site...
Chacapamac replied on at Permalink Reply
Ok guys.
Because I’m nice, I vote for Concrete in the Critic’s Choice Awards as my favorite CMS and other major CMS are strangely absent from it?????

I just warn people of the price tag involve in a top of the line multilingual solution at Concrete (That make me automatically drop all Concrete testing)

With Joomla 2.5 - 3.0 — I can have a Top Notch easy way for multilingual for peanut with the internal Joomla multilingual system and a third party pro-extension for around $30 US a year, including upgrade and support.

With Concrete their top notch solution is $1,750 or now with the fantastic special of $875
— Yes almost the going price for the construction of an entire CMS site in any other major platform. This is, to me ridiculous.

And I will not back down to provide my customers with any half-half free compromise just for a cool UI — This is for the coolness factor of Concrete that I cast my vote.
zoinks replied on at Permalink Reply
So far, I have had no need for multilingual sites, but I'm curious about something: are they any better than Google Translate? To me, Google Translate is almost worthless. If a website was serving up its English content the way Google Translate does, I wouldn't stick around to read past the first paragraph. However, at times, I am looking for some information, Google Translate is my only option, it is passable (just barely) for me to squeeze out some kind of knowledge.
frz replied on at Permalink Reply
Thanks for your vote!

You know, there is a free solution, from us, for running a multi-lingual site:

Let me say again. Free.

There is also an enterprise version, which takes the SAME exact architecture and adds tools that a larger group would need to collaborate.

It strikes me as very reasonable to give away the product in a way that it works well for individuals, and charge for the version that groups use - if you're a group after all, chances are better theres some money involved.

With regards to scale, it is actually quite cheap for CMS at this level. We're putting it together with our Enterprise content workflow and production tools into a suite that costs 5-6 figures depending on how you want it licensed. Many commercial CMSs are licensed in the $200-300k+ range at this point. I get this may not be the projects you're working on, but believe me when I tell you others are.

At concrete5 we're trying to be a horizontal product that has solutions for all budgets and project types. Please just enjoy the wealth of free stuff in our marketplace. Don't worry about us pricing things in a way that the big brands feel comfortable buying it and we actually have money in the bank to keep building cool stuff in the core for free.
Chacapamac replied on at Permalink Reply
You got a error on your live Demo...
Fatal error: Exception thrown without a stack frame in Unknown on line 0

Question: is this demo the free or paying version?

My main question here will be.

With the free Internalization components:

1• Can I have a COMPLETE professional translation of a Concrete site with all third party add-ons (that support multilingual) — No half-half here...

2• Can you have multiple editors working on the site translation

3• Do you have some kind of central dashboard (as an administrator) when you see an overview of the translation progress.

4• Do you habe some kind of ACL to determine whoe can edit what?

I have difficulty to grasp where the differences are and what limitation are impose with the free version

I look at the additional tools for the Enterprise version

• Centralized content report delivers (maybe something to do with my question 3 (for the free version)?) 

• Content report can integrate --- (OK) 

• Language specific dictionaries  --- (OK)

• Translate all theme and application strings centrally using a web GUI. (Not sure about that one, maybe something to do with my question 1 (for the free version)?) 

• Use Google Translate, Bing, or your own custom dictionary (Ok) 
frz replied on at Permalink Reply 1 Attachment
Demo is back up, it's of the free version - which obviously you can play with on your own..

Yes add-ons can be translated, but it does mean that they are property using t() strings everywhere. We try to enforce that in the PRB but its not absolute.

I've attached a PDF on the enterprise version. It has more of the workflow stuff you're speaking of.
onemhz replied on at Permalink Reply
To build working multi-language site
look this