3v4l.org

run code in 300+ PHP versions simultaneously
<?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;
Output for 8.1.28, 8.2.18, 8.3.6 - 8.3.7
languages in list1: 203 languages in list2: 619 languages that exists in list1, but not in list2: 0 languages that exists in list2, but not in list1: 416 examples of language for end-user: - English (anglais) - français (français) - 한국어 (coréen)
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 languages in list1: 203 languages in list2: 619 languages that exists in list1, but not in list2: 0 languages that exists in list2, but not in list1: 416 examples of language for end-user: - English (anglais) - français (français) - 한국어 (coréen)
Output for 7.2.0 - 7.2.34, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.27, 8.2.0 - 8.2.17, 8.3.0 - 8.3.4
languages in list1: 190 languages in list2: 613 languages that exists in list1, but not in list2: 0 languages that exists in list2, but not in list1: 423 examples of language for end-user: - English (anglais) - français (français) - 한국어 (coréen)

preferences:
189.75 ms | 403 KiB | 192 Q