setlocale () возвращает false - PullRequest
       10

setlocale () возвращает false

2 голосов
/ 12 сентября 2010

Я установил голландский локальный (nl_NL utf8) на своем веб-сервере (когда я выполняю locale -a, я вижу nl_NL utf8, так что все в порядке).

Однако даты на моей веб-странице указаны ванглийский (я поставил setlocale(LC_ALL, 'nl_NL'); в верхней части моих страниц).Я прочитал, когда вы устанавливаете пакет локали после компиляции php, я должен перекомпилировать php.

Но есть ли другое решение, без перекомпиляции php, чтобы оно работало?

Спасибо!

Ответы [ 2 ]

10 голосов
/ 01 сентября 2013

Я суммирую здесь то, что я нашел, столкнувшись с подобной проблемой, поскольку здесь, по-видимому, не было никакого конструктивного ответа (действительно, неправильный: setlocale() действительно изменяет вывод strftime()), и это может быть полезно для других..

Руководство по PHP говорит

Возвращаемые значения

Возвращает новую текущую локаль или FALSE, если функциональность локали не реализована на вашемплатформа, указанный языковой стандарт не существует или недопустимое имя категории.

поэтому для диагностики сначала убедитесь, что установлен правильный языковой стандарт (nl_NL, nl_NL.UTF-8 и т. д.),либо с помощью оболочки, либо в PHP system('locale -a').В некоторых системах Ubuntu есть скрипт для установки локали, например./usr/share/locales/install-language-pack nl_NL но установка с помощью apt-get также может быть рассмотрена.(Для экзотических локалей также проверьте, что локаль поддерживается: в некоторых системах /usr/share/i18n/SUPPORTED).

Затем вы можете получить вывод setlocale (), используя var_dump(setlocale('nl_NL')); (так как только setlocale() не выводитчто-нибудь).

Чтобы лекарство могло восстанавливать локаль с помощью locale-gen nl_NL, nl_NL

После этого update-localedpkg-reconfigure locales) может потребоваться в некоторых системах.

2 голосов
/ 12 сентября 2010

Это может быть предусмотрено: setlocale() не изменяет автоматически выходные данные формата дат, полученных с помощью date() и strftime(). Он локализует названия дней недели и месяцев, но не более того.

Можете ли вы показать некоторые примеры того, как вы выводите даты и как они не могут быть преобразованы?

...