4

So it's been two years since I last built a multi language site and I'm starting a new one strait away.

The last site I built I used the biber multi language module which seems to have had a name change since then and is now called Multi Language Support. With the last build I used matrix and an a drop down to set the language setting for each row, thus ensuring that each page was all in one entry and it would be easy to add additional languages, just by adding an additional row to the matrix field.

My question is twofold. Are there other approaches to consider at this point, since it's been two years since I last built a multi language site.

Secondly with the last site all the SEO (meta description, meta keywords and title tags were in English only) The new site will need all of this in both English and French. I typically use the SEO Lite module to handle SEO, but I don't see a way to have multiple languages available with this. Is there a simple way to set this up or will I need to go with matrix fields as mentioned above?

Am open to any and all approaches that are available for me to evaluate.

** UPDATE **

Will not be using Structure so that does not need to be a factor.

CreateSean
  • 1,286
  • 1
  • 21
  • 42

7 Answers7

11

I don't have a long-winded answer, but Publisher from Boldminded looks quite nice and full of features. And it's on sale.

Brian is a great dev with great support. Based on past experiences with support I highly recommend taking a look.

http://boldminded.com/add-ons/publisher

Wedodan
  • 371
  • 1
  • 6
7

I have been using a few different approaches:

  • Transcribe is have been using recently. It works very well with template rewriting, language variables. It's pretty easy to set up, but is also sometimes a bit too powerfull. It's supposed to work well with structure, but i have not yet really investigated it. one of the benefits is that you are not required to have all pages in all languages.

  • Structure With structure and Low Variables you can easily set up a tree like:

    home /about us /products /nl/home /nl/over ons /nl/producten

You can reuse your field groups and not all content has to exist in the different languages

Jelle Dijkstra
  • 484
  • 2
  • 8
  • after looking through the videos and docs for transcribe, I've decided to go with that. Thanks for your answer. – CreateSean Nov 02 '12 at 15:43
6

I would say it would depend on the size of the website. For a small site building out two columns out in matrix would be perfect like you have done. I have done this with a Mobile that simply had a column for English and for Spanish for all content elements as well as meta tags too. Then I simply passed a variable based on what language the visitor initially selected.

But I would say going with Multi Site Manager is probably your best bet. It's true that you will need to purchase some additional addons if you're using them on your 'default' site, but it's very easy to manage. Plus won't you want your URL structures to be different? For SEO purposes you'd really want to have spanish/french or whatever language to have its own unique URL.

I typically will use MSM and the NSM Better Meta addon. I would say this offers the most flexibility no matter the size of the site.

Mark Busnelli Jr
  • 435
  • 3
  • 10
2

my approach on a couple of sites, regardless of size, has been:

  1. Low Variables for in-template language variables
  2. strategic planning of template group and template names (since it's the one thing that's a bit more difficult to handle translation on with anything other than htaccess)
  3. a "languages" channel for extensibility
  4. each channel has a language field which uses a radio button drawn from the languages channel so the language is assigned to the entry (and then used in the entries loop as a limiter)
  5. Playa to relate the entry "equivalents" together with one another (i.e. allow a one to one language switch WITHOUT all the languages being in the same entry) - a relationship field is technically the better fix, but Playa has searchability where relationship fields do not
  6. SEO handled with custom fields in the channels, with conditional fall back to a default set in Low Variables

This approach is what I preferred (I have used Transcribe but I did find it a bit resource intensive in terms of queries where this approach is a bit lighter, especially with caching). It allows me to maintain consistent enforcement and validation of required fields, for example, and allows for a variety of other benefits - language-specific entry url titles (without having to fore the content editor to create them manually), asynchronous content, asynchronous content translation (which always seems to be an issue - english is available before french is, awaiting translation, for example), separate workflows potentially, etc.

You can see this approach in action at www.cps.ca

Jean St-Amand
  • 793
  • 5
  • 12
  • 1
    By way of an update - Tom Jaeger from EE Harbor touched base with me after I posted this letting me know that Transcribe 1.5 introduced much more efficient querying and caching that makes it worth a look for you, Sean. It employes a mindset similar to what I outlined AND offers you the ability to set template name language variables as well, for a completely translated URL structure. If that's a priority for your client, it's a solid option. – Jean St-Amand Nov 02 '12 at 15:30
2

I've done a number of multi-language sites with EE, albeit never with the Bieber module. My preference is to use Republic Variables for creating a variable matrix for labels (then it's just a simple flexible tag on the page). There's a bit of set-up that needs to be done, but once you've done it a couple of times it's only 5 minutes work:

A basic overview of steps (I've begun documenting them on my very old EE site):

1) Use the .htaccess method to remove index.php from URLs (making them clean) and in EE, set the system to use the title as the article link

2) Create ANSI directories for each language and move copies of index.php and .htaccess where the system path is corrected:

$system_path = '..system';

and in the language director, create a .htaccess to relaunch queries with the current language:

RewriteEngine on
RewriteCond $1 !^(index\.php) [NC]
RewriteRule ^(.*)$ /ru/index.php/$1 [L]

(check my site for more detailed directions)

3) Install the wonderful Republic Variables and set for the number of languages you need. (_en for English, _ru for Russian, _es for Spanish, etc..) and make the same one default as the default language in your index.php. Under configuration, I prefer to set for a Language Postfix. Add a variable "teaser" for testing, and fill in all languages.

4) On the page, drop in a tag with this format: {variable_{language}}, e.g.

{teaser_{language}

and you should see the default language variable. Insert the language in the URL before the template/page (e.g., www.sitename.com/ru/directory/template) and the language will switch on the fly. I'll be documenting this in a follow-up post this weekend.

Holland
  • 422
  • 4
  • 10
  • The bieber module uses an approach very similar to what you've outlined here. – CreateSean Nov 02 '12 at 15:39
  • hi, I am using the same method as you described. anyways, you could also add $assign_to_config['deft_language'] = "spanish"; to the individual index.php files. that way, error messages and emails get triggered in the correspondant language. anyways: my question to you is: did you find a method to automatically redirect a user based on his browser language? cheers – outline4 Dec 04 '13 at 15:16
  • Hi - this approach requires a url to trigger a path/language change. You could use this (http://stackoverflow.com/questions/3770513/detect-browser-language-in-php) to detect the browser language and redirect to the correct path… – Holland Dec 05 '13 at 09:39
2

I think MSM could also be considered as an option for Multilingual sites, because of the following factors:

  • For content rich sites, MSM is really easier for content contributors, which are usually responsible for a signle language. The one language == one site equation is an easy one to understand
  • Multilingual websites tend to cater for various audiences. Those audiences needs usually evolve over the 3 or 4 years your site will last. MSM offers you the possibility to add sections or functionalities for a specific language down th line, which is a lot more difficult with a more entangled data structure
  • As a developer, an MSM setup offers you a lot of flexibility. Adding or deleting languages is as easy as copying, deleting an MSM site, SEO tend to be easier since you can translate your template / template groups / url_titles quickly. If your template structure is clean and if you use add-ons like low variables or even global variables to avoid having content in your templates, maintaining various sets of templates is really easy. It can also be a bonus if one day you need to deal with right to left languages or something like that.

Here is an example of a site I maintain

Jérôme Coupé
  • 441
  • 2
  • 6
  • This is actually an excellent idea. It CAN lead to more duplication, but in many cases it's actually going to be the simplest possible solution. (And none of your editors are likely to edit the wrong language's content by mistake, which IS an issue otherwise!) – adrienne Nov 06 '12 at 21:24
2

I also want to point out the Multi-Language Episodes on the EE Podcast:

http://ee-podcast.com/episodes/tag/multi-lingual

Ep 49 actually has Transcribe's Tom Jaeger chatting about multi-language process and gotchas.

Ep 54 has Nicolas Bottari chat about his processes

lealea
  • 563
  • 2
  • 10