public function getAvailableLanguages()
{
$languages = $this->getLanguages();
$territories = $this->getTerritories();
$available = [];
foreach (Finder::create()->directories()->depth(0)->in('app/system/languages')->name('/^[a-z]{2,3}(_[A-Z]{2})?$/') as $dir) {
$id = $dir->getFilename();
@(list($lang, $country) = explode('_', $id));
if (isset($languages[$lang])) {
$available[$id] = $languages[$lang];
if (isset($country, $territories[$country])) {
$available[$id] .= ' - ' . $territories[$country];
}
}
}
asort($available);
return $available;
}