Оба написано на php.net. Просто внимательно прочитайте его.
Функция getLocales
возвращает всех языков, поддерживаемых классом ResourceBundle
(доступен в библиотеке СИС, через расширение аэроропорт), если аргумент отсутствует.
Функция getRegion
возвращает область Subtag для локализации или NULL
, если нет. Для этого вы получаете BH, если вы пишете ar_BH
в качестве аргумента для этой функции.
На php.net представлен пример с другим примером, но его то же самое.
Locale::getRegion('de-CH-1901');
output: CH
Locale::getRegion('ar_BH');
output: BH
И getRegion()
возвращает ничего, если ar
был установлен, то это потому, что он не видит область подтег в аргументе - потому что все коды локализации собираются из двух (или может быть три, как первый пример говорит).
И если эти части имеют строго заданный порядок, он не может показать какой-либо регион, если был установлен только ar
. Но чтобы получить более точный ответ, я должен знать, как это было написано (библиотека ICU).
Buit Я сделал незначительный тест для вас.
Код локализации для моего родного языка: cs_CZ
.
Locale::getRegion(`cs_CZ`);
output: CZ
Locale::getRegion(`cs`);
output: /* nothing */
Locale::getRegion(`CZ_cs`);
output: cs
и теперь, код вы
Locale::getRegion(`BH_ar`);
output: ar
'ar' не имеет область ... Это обычно означает«арабский»в качестве региона-независимого языка. 'ar_BH' специфичен для Бахрейна, который, очевидно, * является * регионом. – deceze
Попытайтесь получить его значение с помощью ключа массива, а не по значению массива, ИЛИ Преобразовать значение вашего массива в шапку. Режим OFF/ON -> как: ar/AR – Monty