2016-02-12 2 views
2

Я работаю с локалями, и у меня есть проблема, связанная с современным стандартным арабским языком на PHP.Работа с современным стандартом арабского языка в PHP

Когда я делаю print_r(ResourceBundle::getLocales('')) я получаем следующий список http://pastebin.com/raw/qhBawQ5C

Я могу видеть локаль ar в списке, таким образом я предполагаю, имеющиеся в его распоряжении на моей машине.

Теперь, когда я запускаю echo Locale::getRegion('ar'); Получаю пустое значение. Но когда я запускаю echo Locale::getRegion('ar_BH');, я получаю BH.

Почему это и как я могу сделать работу locale?

Заранее спасибо

+0

'ar' не имеет область ... Это обычно означает«арабский»в качестве региона-независимого языка. 'ar_BH' специфичен для Бахрейна, который, очевидно, * является * регионом. – deceze

+0

Попытайтесь получить его значение с помощью ключа массива, а не по значению массива, ИЛИ Преобразовать значение вашего массива в шапку. Режим OFF/ON -> как: ar/AR – Monty

ответ

1

Оба написано на 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 
+0

ok, вы не получили мой вопрос. Он работает, когда я запускаю Locale :: getRegion ('ar_BH'); // Выходы BH Он не работает, когда я запускаю Locale :: getRegion ('ar'); // Нет вывода Почему? – Phantom007

+0

Я добавил вам некоторую информацию. Надеюсь, этого будет достаточно. –

Смежные вопросы