CakeFest 2024: The Official CakePHP Conference

Locale::getDisplayRegion

locale_get_display_region

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Locale::getDisplayRegion -- locale_get_display_regionDevolver un nombre manifiesto debidamente localizado de la región de la configuración regional de entrada

Descripción

Estilo orientado a objetos

public static Locale::getDisplayRegion(string $locale, string $in_locale = ?): string

Estilo por procedimientos

locale_get_display_region(string $locale, string $in_locale = ?): string

Devuelve un nombre manifiesto debidamente localizado de la región de la configuración regional de entrada. Si es null se utiliza la configuración regional predeterminada.

Parámetros

locale

La configuración regional de la que devolver una región manifiesta.

in_locale

El formato regional opcional a usar para mostrar el nombre de la región

Valores devueltos

El nombre manifiesto de la región de la configuración regional dada por $locale en el formato apropiado dado por $in_locale.

Ejemplos

Ejemplo #1 Ejemplo de locale_get_display_region()

<?php
echo locale_get_display_region('sl-Latn-IT-nedis', 'en');
echo
";\n";
echo
locale_get_display_region('sl-Latn-IT-nedis', 'fr');
echo
";\n";
echo
locale_get_display_region('sl-Latn-IT-nedis', 'de');
?>

Ejemplo #2 Ejemplo orientado a objetos

<?php
echo Locale::getDisplayRegion('sl-Latn-IT-nedis', 'en');
echo
";\n";
echo
Locale::getDisplayRegion('sl-Latn-IT-nedis', 'fr');
echo
";\n";
echo
Locale::getDisplayRegion('sl-Latn-IT-nedis', 'de');
?>

El resultado del ejemplo sería:

Italy;
Italie;
Italien

Ver también

add a note

User Contributed Notes 2 notes

up
19
mark at SHOULDREMOVE dot moderndeveloperllc dot com
9 years ago
You don't have to have a fully-formed locale for the first parameter. This makes the function useful for getting the country name from any locale:

<?php
var_dump
(Locale::getDisplayRegion('-US', 'fr'));

//Returns
string 'États-Unis' (length=11)
?>
up
7
info at domain name (see note)
7 years ago
in fact , I would do exactly the opposite : find the country code (iso3166) from the country name. Found on the web, one solution is to use a table of correspondence between the country code and the country name for each language.
There are too many countries and language code for this type of table.

With a PHP function , the convertion can be performed as well:

function countryNameToISO3166($country_name, $language) {
if (strlen($language) != 2) {
//Language must be on 2 caracters
return NULL;
}

//Set uppercase if never
$language = strtoupper($language);

$countrycode_list = array('AF', 'AX', 'AL', 'DZ', 'AS', 'AD', 'AO', 'AI', 'AQ', 'AG', 'AR', 'AM', 'AW', 'AU', 'AT', 'AZ', 'BS', 'BH', 'BD', 'BB', 'BY', 'BE', 'BZ', 'BJ', 'BM', 'BT', 'BO', 'BQ', 'BA', 'BW', 'BV', 'BR', 'IO', 'BN', 'BG', 'BF', 'BI', 'KH', 'CM', 'CA', 'CV', 'KY', 'CF', 'TD', 'CL', 'CN', 'CX', 'CC', 'CO', 'KM', 'CG', 'CD', 'CK', 'CR', 'CI', 'HR', 'CU', 'CW', 'CY', 'CZ', 'DK', 'DJ', 'DM', 'DO', 'EC', 'EG', 'SV', 'GQ', 'ER', 'EE', 'ET', 'FK', 'FO', 'FJ', 'FI', 'FR', 'GF', 'PF', 'TF', 'GA', 'GM', 'GE', 'DE', 'GH', 'GI', 'GR', 'GL', 'GD', 'GP', 'GU', 'GT', 'GG', 'GN', 'GW', 'GY', 'HT', 'HM', 'VA', 'HN', 'HK', 'HU', 'IS', 'IN', 'ID', 'IR', 'IQ', 'IE', 'IM', 'IL', 'IT', 'JM', 'JP', 'JE', 'JO', 'KZ', 'KE', 'KI', 'KP', 'KR', 'KW', 'KG', 'LA', 'LV', 'LB', 'LS', 'LR', 'LY', 'LI', 'LT', 'LU', 'MO', 'MK', 'MG', 'MW', 'MY', 'MV', 'ML', 'MT', 'MH', 'MQ', 'MR', 'MU', 'YT', 'MX', 'FM', 'MD', 'MC', 'MN', 'ME', 'MS', 'MA', 'MZ', 'MM', 'NA', 'NR', 'NP', 'NL', 'NC', 'NZ', 'NI', 'NE', 'NG', 'NU', 'NF', 'MP', 'NO', 'OM', 'PK', 'PW', 'PS', 'PA', 'PG', 'PY', 'PE', 'PH', 'PN', 'PL', 'PT', 'PR', 'QA', 'RE', 'RO', 'RU', 'RW', 'BL', 'SH', 'KN', 'LC', 'MF', 'PM', 'VC', 'WS', 'SM', 'ST', 'SA', 'SN', 'RS', 'SC', 'SL', 'SG', 'SX', 'SK', 'SI', 'SB', 'SO', 'ZA', 'GS', 'SS', 'ES', 'LK', 'SD', 'SR', 'SJ', 'SZ', 'SE', 'CH', 'SY', 'TW', 'TJ', 'TZ', 'TH', 'TL', 'TG', 'TK', 'TO', 'TT', 'TN', 'TR', 'TM', 'TC', 'TV', 'UG', 'UA', 'AE', 'GB', 'US', 'UM', 'UY', 'UZ', 'VU', 'VE', 'VN', 'VG', 'VI', 'WF', 'EH', 'YE', 'ZM', 'ZW');
$ISO3166 = NULL;
//Loop all country codes
foreach ($countrycode_list as $countrycode) {
$locale_cc = Locale::getDisplayRegion('-' . $countrycode, $language);
//Case insensitive
if (strcasecmp($country_name, $locale_cc) == 0) {
$ISO3166 = $countrycode;
break;
}
}
//return NULL if not found or country code
return $ISO3166;
}

Tests

$cc=countryNameToISO3166('Costa Rica','US');
echo '<br>(English) Country code for Costa Rica is '.$cc;
$cc=countryNameToISO3166('Royaume-Uni','FR');
echo '<br>(Français) Country code for Royaume-Uni is '.$cc;
$cc=countryNameToISO3166('Frankreich','DE');
echo '<br>(Deutsch) Country code for Frankreich is '.$cc;
//Wrong language
$cc=countryNameToISO3166('Royaume-Uni','US');
echo '<br>(English) Country code for Royaume-Uni is '.var_dump($cc);

returns

(English) Country code for Costa Rica is CR
(Français) Country code for Royaume-Uni is GB
(Deutsch) Country code for Frankreich is FR
(English) Country code for Royaume-Uni is NULL

Hope it can help someone other

http://www.fobec.com
To Top