Multi-Region & Multi-Language I'm trying to setup a multi country site running off one Craft install. 

example.com
ca.example.com
uk.example.com

Each countries content will be translated into five languages (English - en, Spanish - es, French - fr, German - de, Japanese - ja). 

example.com/en
example.com/es
example.com/fr
example.com/de
example.com/ja

ca.example.com/en
ca.example.com/es
ca.example.com/fr
ca.example.com/de
ca.example.com/ja

uk.example.com/en
uk.example.com/es
uk.example.com/fr
uk.example.com/de
uk.example.com/ja

Entries will be translated into all five languages. But, entries should also have the ability to display in one or two or all of the countries etc. I understand how the locales (translations) functionality built into Craft can handle the languages but how would the countries be handled at the same time?
I think this is partially related to a question I raised recently, even though my site won't have that many languages per country but some countries will have 2 languages.

How can I add in new Locales to the locale list?

Then you would do something like this in your config

return array(
    'example.com' =&gt; array(
        'siteUrl' =&gt; array(
            // Global locales
            'en' =&gt; 'http://example.com/en/',
            'es' =&gt; 'http://example.com/es/',
            'fr' =&gt; 'http://example.com/fr/',
            'de' =&gt; 'http://example.com/de/',

            // Canada locales
            'ca_en' =&gt; 'http://ca.example.com/en/',
            'ca_es' =&gt; 'http://ca.example.com/es/',
            'ca_fr' =&gt; 'http://ca.example.com/fr/',
            'ca_de' =&gt; 'http://ca.example.com/de/',

            // UK locales
            'gb_en' =&gt; 'http://uk.example.com/en/',
            'gb_es' =&gt; 'http://uk.example.com/es/',
            'gb_fr' =&gt; 'http://uk.example.com/fr/',
            'gb_de' =&gt; 'http://uk.example.com/de/',
        ),
    ),
);


This should work, I haven't tested it as yet as my site is still in planning stages and I have not gotten into the development phase as yet.

Edited answer based on comment.

For all countries to use the same English, you can set your array to look like below, however this will not allow individual countries to have different English copy since we are pointing them all to the same Locale now.

return array(
    'example.com' =&gt; array(
        'siteUrl' =&gt; array(
            // Global locales
            'en' =&gt; 'http://example.com/en/',
            'es' =&gt; 'http://example.com/es/',
            'fr' =&gt; 'http://example.com/fr/',
            'de' =&gt; 'http://example.com/de/',

            // Canada locales
            'en' =&gt; 'http://ca.example.com/en/',
            'ca_es' =&gt; 'http://ca.example.com/es/',
            'ca_fr' =&gt; 'http://ca.example.com/fr/',
            'ca_de' =&gt; 'http://ca.example.com/de/',

            // UK locales
            'en' =&gt; 'http://uk.example.com/en/',
            'gb_es' =&gt; 'http://uk.example.com/es/',
            'gb_fr' =&gt; 'http://uk.example.com/fr/',
            'gb_de' =&gt; 'http://uk.example.com/de/',
        ),
    ),
);