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