Реально ли полагаться на 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');

Возможно, да. Мудро, совсем нет!

Другие вопросы по тегам