Можно ли полагаться на setlocale и полагаться на устанавливаемые локали? - PullRequest
8 голосов
/ 21 декабря 2009

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

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

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

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

Ответы [ 3 ]

6 голосов
/ 07 мая 2015

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

setlocale(LC_ALL, 'en_US') or die('Locale not installed');
6 голосов
/ 21 декабря 2009

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

0 голосов
/ 21 декабря 2009

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

...