- strpos: documentation ( source)
- array_filter: documentation ( source)
- array_diff: documentation ( source)
<?php
function getListFromLocales(): array
{
return array_filter(ResourceBundle::getLocales(''), function ($value) {
return strpos($value, '_') === false;
});
}
function getListFromLanguages(): array
{
$resourceBundle = new ResourceBundle('en', 'ICUDATA-lang', false);
$languagesBundle = $resourceBundle['Languages'];
$languages = [];
foreach ($languagesBundle as $languageCode => $languageName) {
$languages[] = $languageCode;
}
return $languages;
}
function languageForEndUser($language): string
{
return Locale::getDisplayLanguage($language, $language) . ' (' . Locale::getDisplayLanguage($language) . ')';
}
$list1 = getListFromLocales();
$list2 = getListFromLanguages();
echo 'languages in list1: ' . count($list1) . PHP_EOL;
echo 'languages in list2: ' . count($list2) . PHP_EOL;
echo 'languages that exists in list1, but not in list2: ' . count(array_diff($list1, $list2)) . PHP_EOL;
echo 'languages that exists in list2, but not in list1: ' . count(array_diff($list2, $list1)) . PHP_EOL;
Locale::setDefault('fr'); // Assume end-user speaks french
echo 'examples of language for end-user: ' . PHP_EOL;
echo ' - ' . languageForEndUser('en') . PHP_EOL;
echo ' - ' . languageForEndUser('fr') . PHP_EOL;
echo ' - ' . languageForEndUser('ko') . PHP_EOL;