I understand that you can create translations in many language for one website. But what if I want to create one website not just simply to be multilingual but for multi-countries and each country's website can be bilingual or trilingual.

For example, let's I have website example.com and its default country is USA. It will have 2 languages: English and Spanish When I click any of them it will take me to the corresponding page:

  1. For English version: example.com/us/en/
  2. For Spanish version: example.com/us/es

On the top menu I will have a menu called "Countries". When I click on "Countries", it can be take me to a "Countries" page that will show all the countries and languages they have, for example:

  • United States - English - Español
  • Japan - English - 日本語

Or "Countries" can be a drop-down list showing above.

enter image description here

Can someone please share with ideas to implement this?


I feel like this is related to MultiSite feature, but was not able to see any good working example on the web.


You need a mix of (at least) 3 modules to do this:

  • 1
    I'm not going to use 3 domains, only 1 as shown in my post. Let me know if I'm missing anything... – Askar Mar 31 '14 at 2:20
  • Surely, I will have to use subdomains if there's no way to make it as I proposed – Askar Mar 31 '14 at 3:07
  • Domain doesn't mean you have to have different DNS, it allows you to split your content into seperated "domains". So you can have the same URL suffixed with some code (us, ja and fr in your case). Using domains allows you: to publish some content in only one domain (make a news in "US", translated in English and Spanish, that wouldn't appear on "JA" and "FR"), have different themes depending on the domain, chose available language per domain... I did basically the same site that you want, and I used these modules. – Matt Mar 31 '14 at 9:23
  • I meant if there a way without using suffixes. Having suffix will mean having a subdomain (or domain). I wondered to split sites using subfolders like example.com/us/en/. And it seems it's doable. Do you know any working site with the conditions I brought? – Askar Apr 1 '14 at 1:50
  • 1
    @coderama not yet... – Askar May 5 '15 at 12:03

For anyone else interested as this is still a top result in Google for this problem, the Country Path module https://www.drupal.org/project/country_path was released the other day which requires the Domain module https://drupal.org/project/domain but is a really good solution to this problem.

  • I tried country_path and can literally not find any advice on how to actually use it. It doesnt seem to work at all. – coderama May 5 '15 at 12:01
  • I'm trying this instead; drupal.org/project/subfolders_domain ... which I think is the same as the country path module, except it actually has documentation – coderama May 5 '15 at 12:43
  • Once you enable domain and country_path, goto admin->configuration->(add)domain records and update the hostname field. i.e., If the domain is detected using country code in path, you should specify like example.com/usa . Your hostname will be example.com and country path - usa. – Vinoth Mar 22 '18 at 19:38

You create URLs based on language then by country, this you can configure in the Pathauto module.

For example us/en or us/es.

You can create multilevel menus to show list of languages in each country.

Then you can translate nodes using i18n or Entity Translation.

  • i18n does not allow prefixes with slashes. Took me 2 days to figure this out. – coderama May 6 '15 at 8:57

You could do a multisite environment, 1 per country, and then a multilingual shape over it.

You can find some tips searching "drupal multisite countries" in google.

  • Yes, I was also guessing this is smth about multisite... But I couldn't find any good working example for this. – Askar Mar 31 '14 at 2:22

You could also use purl for this. A disadvantage is that you would need to create an own language negotiation plugin if you want to have the language as the second parameter. Based on the purl prefixes you can add access control etc, etc. I have some code i could push to a drupal sandbox if you are willing to test it. If you want to have a nice UI with a lot of overhead i would go for domain module :)

Not the answer you're looking for? Browse other questions tagged or ask your own question.