Реально ли полагаться на setlocale и полагаться на устанавливаемые локали?
Я пытался сгенерировать локализованную строку даты с strftime
заполнитель, который я использую %x
, Язык / локаль setlocale(LC_ALL, array('jp','japanese'))
Однако ни одна локаль не была доступна, поэтому он генерировал строку с неправильными символами. Затем я установил ja_JP.utf8
locale и указал, что в качестве первого элемента массива и проблемы с форматированием даты я решил проблему.
У меня вопрос, должен ли я всегда полагаться на устанавливаемые локали? Я знаю, как установить их на ящики, к которым у меня есть root-доступ, но что, если у меня нет доступа?
я верю Zend_Locale
а также Zend_Translate
не полагайтесь на setlocale
вообще, но каким-то образом сделать это внутренне, что создает у меня впечатление, что это практически невозможно для приложений уровня предприятия.
Я знаю, что мог бы использовать Zend_Locale
а также Zend_Translate
в моем приложении, но он также должен поддерживать PHP4, по крайней мере, еще на один год, поэтому я не могу полагаться только на них.
3 ответа
Если моя проверка setlocale() верна, ответ: нет и нет. Диапазон установленных локалей, как и их названия, различается, и доступность определенной локали в конечном счете не может быть предсказана с полной уверенностью.
Вы можете проверить возвращаемое значение setlocale и, по крайней мере, убедиться, что оно установлено. В противном случае у вас будут тихие сбои:
setlocale(LC_ALL, 'en_US') or die('Locale not installed');