* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Intl; use Symfony\Component\Intl\Exception\MissingResourceException; /** * Gives access to region-related ICU data. * * @author Bernhard Schussek * @author Roland Franssen */ final class Countries extends ResourceBundle { /** * Returns all available countries. * * Countries are returned as uppercase ISO 3166 two-letter country codes. * * A full table of ISO 3166 country codes can be found here: * https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes * * This list only contains "officially assigned ISO 3166-1 alpha-2" country codes. * * @return string[] an array of canonical ISO 3166 alpha-2 country codes */ public static function getCountryCodes(): array { return self::readEntry(['Regions'], 'meta'); } /** * @param string $country Alpha2 country code */ public static function exists(string $country): bool { try { self::readEntry(['Names', $country]); return true; } catch (MissingResourceException $e) { return false; } } /** * Get country name from alpha2 code. * * @throws MissingResourceException if the country code does not exists */ public static function getName(string $country, string $displayLocale = null): string { return self::readEntry(['Names', $country], $displayLocale); } /** * Get list of country names indexed with alpha2 codes as keys. * * @return string[] */ public static function getNames($displayLocale = null): array { return self::asort(self::readEntry(['Names'], $displayLocale), $displayLocale); } protected static function getPath(): string { return Intl::getDataDirectory().'/'.Intl::REGION_DIR; } }