locale loop doesn't get correct path
Turns out the issue was my config set incorrectly. I was doing this:

'siteUrl' =&gt; array(
    'en' =&gt; 'http://website.dev/en',
    'en-gb' =&gt; 'http://website.dev/en-gb',
    'en-us' =&gt; 'http://website.dev/en-us',
    'en-au' =&gt; 'http://website.dev/en-au',
    'en-nz' =&gt; 'http://website.dev/en-nz'
),


When the array keys need to match the way they are set in craft with underscores (and your public/locale/index.php file)

'siteUrl' =&gt; array(
    'en' =&gt; 'http://website.dev/en',
    'en_gb' =&gt; 'http://website.dev/en-gb',
    'en_us' =&gt; 'http://website.dev/en-us',
    'en_au' =&gt; 'http://website.dev/en-au',
    'en_nz' =&gt; 'http://website.dev/en-nz'
),