like @Steven R. Loomis said you can use a locale 'und_US' and Locale::getPrimaryLanguage('und_US')
will just return 'und'
If using the php intl extension, it can accept a locale of 'und_US' , but it will no format your currencies properly according to the region US only, you need to specify a language.
$locales = array('de_DE', 'en_US', 'ja_JP', 'und_US', 'und_JP', 'und_DE', 'und_FR');
$amount = 1234567.891234567890000;
foreach ($locales as $locale) {
echo Locale::getPrimaryLanguage($locale).'<br />';
$formatter = new NumberFormatter($locale, NumberFormatter::CURRENCY);
echo $formatter->getTextAttribute(NumberFormatter::CURRENCY_CODE);
echo '|' . $formatter->getSymbol(NumberFormatter::CURRENCY_SYMBOL);
echo '|' . $formatter->getSymbol(NumberFormatter::INTL_CURRENCY_SYMBOL);
echo ' - ' . $formatter->formatCurrency($amount, $formatter->getTextAttribute(NumberFormatter::CURRENCY_CODE));
echo '<br /><br />';
}
returns
de EUR|€|EUR - 1.234.567,89 €
en USD|$|USD - $1,234,567.89
ja JPY|¥|JPY - ¥1,234,568
und USD|$|USD - $ 1234567.89
und JPY|¥|JPY - ¥ 1234568
und EUR|€|EUR - € 1234567.89
und EUR|€|EUR - € 1234567.89
notice how even though you are given the correct currency symbol for the region, the format of the number is incorrect.