У меня есть сайт, который поддерживает эти 5 языков:
- английский
- Французский
- Немецкий
- итальянский
- испанский язык
Пользователи могут переключаться между языками по своему усмотрению. У меня есть страница, которая отображает месяц даты недели в тексте, например:
Понедельник, 12 января
Мой код для этого:
setlocale(LC_TIME, $_SESSION['lang'] . "_" . strtoupper($_SESSION['lang']));
foreach($data['Location']['Day'] as $key => $val) {
$date = strftime("%A %e, %B", strtotime($val['@attributes']['val']));
$data['Location']['Day'][$key]['date'] = $date;
}
На локальном хосте, когда я переключаюсь между языками, неделя и месяц переключаются и работают нормально. Однако на сервере он всегда отображается для меня на английском языке. _SESSION['lang'] работает нормально и меняется, поэтому я не знаю, почему он не показывает французский язык, когда локаль должна быть fr_FR.
Может ли это быть из-за того, что на сервере не установлены локали? Или есть лучший способ локализовать эти строки?
РЕДАКТИРОВАТЬ: я также пытался добавить ".utf8" в вызов setlocale следующим образом:
setlocale(LC_TIME, $_SESSION['lang'] . "_" . strtoupper($_SESSION['lang']) . ".utf8");
Но это тоже не сработало (не сработало ни на локальном хосте, ни на сервере)