Можно ли полагаться на setlocale и полагаться на установленные локали?

Я пытался создать локализованную строку даты с помощью strftime , используемым заполнителем является %x . Язык / локаль – setlocale(LC_ALL, array('jp','japanese')) , однако ни языковой стандарт не был доступен, поэтому генерировал строку с неправильными символами. Затем я установил локаль ja_JP.utf8 и указал, что в качестве первого элемента массива и проблемы с форматированием даты я был разрешен.

Мой вопрос в том, должен ли я всегда полагаться на установленные локали? Я знаю, как установить их в ящиках, к которым у меня есть root-доступ, но что, если у меня нет доступа?

Я считаю, что Zend_Locale и Zend_Translate вообще не полагаются на setlocale но как-то делают это внутри, что создает впечатление, что это практически невозможно для приложений уровня предприятия.

Я знаю, что я мог бы использовать Zend_Locale и Zend_Translate в своем приложении, но также должен поддерживать PHP4, по крайней мере еще на один год, поэтому я не могу полностью полагаться на них.

Если мое исследование setlocale () верное, ответ: Нет и нет. Диапазон установленных локалей меняется, так как их имя и доступность определенного языка в конечном итоге не могут быть предсказаны с полной уверенностью.

Вы можете проверить возвращаемое значение setlocale и хотя бы проверить, что он был установлен. В противном случае у вас будут тихие сбои:

 setlocale(LC_ALL, 'en_US') or die('Locale not installed'); 

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