Я пытался создать локализованную строку даты с помощью 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');
Возможно, да. Мудрый, совсем нет!