Я суммирую здесь то, что я нашел, столкнувшись с аналогичной проблемой, так как здесь, по-видимому, не было конструктивного ответа (неправильный, действительно: setlocale()
действительно меняет вывод strftime()
), и он может быть полезен другим.
PHP manual говорит
Возвращаемые значения
Возвращает новую текущую локаль, или FALSE, если функциональные возможности локаль не реализована на вашей платформе, указанная локаль не существует или название категории инвалид.
так и для diagnosys, сначала проверьте, что установлен правильный языковой стандарт (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()
ничего не выводит).
Для лечения может быть регенерировать языковой стандарт с локали-GEN nl_NL, nl_NL
После update-locale
(и dpkg-reconfigure locales
) могут потребоваться в некоторых системах.
На мой взгляд, 'setlocale()' является * катастрофой *, потому что у него нет согласованной схемы именования для локалей - они варьируются от сервера к серверу. Я искренне рекомендую изучить альтернативы, такие как функции локализации Zend Framework (http://framework.zend.com/manual/en/zend.locale.parsing.html) –