Для каждого php-приложения очень желательно жестко настроить локаль, чтобы не зависеть от настроек сервера. Иначе, по "закону подлости" - в самый неподходящий момент могут возникнуть проблемы с отображением данных. Причем, "артефакты" могут вылезти не только после переезда/миграции на другой сервер, но и даже как будто вообще без причины.

Как установить локаль для PHP - set locale for PHP Как раз подобный случай и произошел недавно с одним web-сервисом, реализованным на PHP.




  

Один из скриптов отображал в интерфейсе приложения срок действия базы данных (совпадает с циклами AIRAC), и администратор этого сервиса заметил странную штуку: срок действия февральской базы данных - цикл 2102 имел весьма странный срок действия -  с 25 января 2021 по 25 января 2021, хотя должен был иметь срок действия с 25 февраля 2021 по 25 марта 2021.

Различные проверки и эксперименты с PHP-скриптом показали, что он выдает дату в формате, у которого сокращенное название месяца выводится на русском языке: 2021-Фев-25 и 2021-Мар-25. А приложение, которое использует данные API, совсем не понимает по-русски, ему необходимо давать всё на английском языке! Соответственно, оно не понимало, какой ему передается месяц и правращало его по умолчанию в первый месяц года.

Причину данного сбоя выяснить не удалось, миграция сервиса точно не выполнялась :), проводились ли какие-то работы на сервере - пока узнать не получилось. Наиболее вероятно,  что системный администратор сервера изменил язык сервера по умолчанию на русский. Поэтому была выполнена настройка локали для PHP с указанием английского языка. В PHP-скрипт была добавлена строка:

 

setlocale(LC_ALL, 'en_US', 'en_US.UTF8', 'en', 'english');

 

Можно было добавить в сокращенном виде:

 

setlocale(LC_TIME, "en_US.UTF-8");

 

 Важно: не перепутать и корректно указать индекс языка - английских языков несколько, не стоит писать en_En (нет такой локализации!), есть: en_Gb, en_Us, en_Au, en_Bz, en_Ca, en_Ie, en_Jm, en_Nz, en_Za, en_Tt.

 


 

 

Вместо глобальной настройки LC_ALL можно указать отдельный параметр, на которые будет влиять локаль:

  • LC_COLLATE – функции сравнения строк
  • LC_CTYPE – функции преобразования и классификации строк
  • C_MONETARYL – для функции localeconv()
  • LC_NUMERIC – задает символ десятичного разделения
  • LC_TIME – форматирование даты/времени
  • LC_MESSAGES – для системных сообщений

 

Установка часового пояса:

Часовой пояс Москвы (UTC + 3):

 

date_default_timezone_set('Europe/Moscow');

 

Часовой пояс UTC:

 

date_default_timezone_set('GMT');

 

Все варианты временных зон - на сайте php.net.

 

Комментарии (0)

Здесь не опубликовано еще ни одного комментария

Оставьте свой комментарий

  1. Опубликовать комментарий как Гость.
0 Значки
Вложения (0 / 3)
Поделитесь своим местоположением

      В скайпе вирус
      В скайпе вирус

      В мае 2011 года компания Microsoft купила Skype. Многие пользователи этой программы не особо были рады этому событию, некоторые из них громко сказали "Фу!" Но, тем не менее, я лично не знаю ни одного человека, который перестал пользоваться программой Skype после смены владельца.




      Где прячутся вирусы
      Где прячутся вирусы

      При заражении компьютера вирусы поступают таким образом, чтобы при загрузке операционной системы они тоже загружались, либо загружалась их самая основная необходимая часть. Для этого они обычно вносят изменения в реестр Windows. В зависимости от продвинутости создателя вируса это может быть реализовано по-разному. Рассмотрим самые распространенные случаи, где прячутся вирусы:  




      Собеседование на работу
      Собеседование на работу

      Текст столетней давности в виде вопросов и ответов при собеседовании при устройстве на работу. Конечно, маловероятно, что кто-то реально будет так отвечать на собеседовании. Так честно... 1. Почему вы выбрали именно нашу компанию? Вы идиот(ка), да? Я, как и все кандидаты до меня и после меня, направил резюме в десяток мест. Где устроюсь быстрее и выгоднее - там и хорошо.   2. Как вы считаете, почему мы...




      Henry Emery & Andy Roberts - Aviation English
      Henry Emery & Andy Roberts - Aviation English

      Aviation English by Henry Emery & Andy Roberts - новый курс английского языка, предназначенный для подготовки летных специалистов (пилотов, борт-радистов, штурманов и авиадиспетчеров) к 4-му уровню владения английским языком по шкале ИКАО. Материал Aviation English by Henry Emery & Andy Roberts отвечает всем требованиям, предъявляемым к языковой подготовке авиаперсонала (DOC 9825 ИКАО – «ICAO...




      Как настроить Wi-Fi Router DLINK DIR-300_NRU под Билайн
      Как настроить Wi-Fi Router DLINK DIR-300_NRU под Билайн

      Для написания этой статьи было потрачено значительное количество времени и сил, было прочитано множество страниц разных форумов, проанализированы некоторые отзывы к статье и в итоге - этот материал, претендующий на истину для помощи тем, кто хочет самостоятельно настроить себе Интернет от билайна через рутер DLINK DIR-300. Эта статья была написана в первую очередь для того, чтобы эта шпаргалка была всегда...




      iTunes не синхронизирует программы
      iTunes не синхронизирует программы

      Ситуация: вы подключили свой iPad или iPhone к компьютеру с помощью кабеля. Программа iTunes запустилась сама, или вы ее принудительно запустили, но функция синхронизации приложений (программ) не активна! :( Выражается это в невозможности установить/убрать галочку на Синхронизации приложений - вся станица "Программы" выглядит не активной.




      SQL-задачка от Яндекса
      SQL-задачка от Яндекса

      Один товарищ рассматривал вариант устроиться на работу в Яндекс на вакансию "Асессор-разработчик". В тестовом задании была задачка на составление SQL-запроса.



Яндекс.Метрика