public function compute(Translator $translator, $locale)
{
$locales = [];
foreach ($this->fallbackLocales as $fallback) {
if ($fallback === $locale) {
continue;
}
$locales[] = $fallback;
}
if (strrchr($locale, '_') !== false) {
array_unshift($locales, substr($locale, 0, -strlen(strrchr($locale, '_'))));
}
foreach ($translator->getAvailableLocales() as $available) {
if ($available === $locale) {
continue;
}
if (substr($available, 0, 2) === substr($locale, 0, 2)) {
array_unshift($locales, $available);
break;
}
}
return array_unique($locales);
}