Как жестко закодировать названия месяцев на французском языке в php? - PullRequest
1 голос
/ 14 марта 2019

Я работаю над приведенным ниже кодом php / javascript, который возвращает названия месяцев на французском языке, но он не соответствует французским словам, которые мы используем.

<script>
document.getElementById('title_fr').value = "<?php setlocale(LC_TIME, "frc"); echo strftime("%d %b %Y", strtotime( $this_date )); ?>"; 
</script>

Приведенный выше скрипт возвращает названия месяцев вфранцузский, который не соответствует нашему набору названий месяцев на французском.

mars
avr.
mai
juin
juil.
août
sept.
oct. 
nov.
déc.

Ниже приводится набор названий месяцев на французском языке, которым мы следуем:

janvier
février
mars
avril
mai
juin
juillet
août
septembre
octobre
novembre
décembre

Постановка задачи:

Мне интересно, чтоизменения, которые нужно внести в скрипт выше, чтобы он возвращал название месяца на французском языке, за которым я следую.

Я считаю, что мне нужно создать массив, как показано ниже, с названиями месяцев на французском языке.

const monthNamesFr = ["janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"];

Ответы [ 2 ]

1 голос
/ 14 марта 2019

Я бы предложил использовать действующий языковой стандарт, например fr_FR для французского языка во Франции.Кроме того, используйте %B для полного названия месяца в документации strftime() .

$this_date = '2018-04-03 12:12:12';
setlocale(LC_TIME, "fr_FR");
echo strftime('%d %B %Y', strtotime($this_date)); // 03 avril 2019

. Это работает независимо от настроенного языкового стандарта системы.

1 голос
/ 14 марта 2019

Так как это, кажется, делает свое дело (из раздела комментариев).Вместо жесткого кодирования дат в массиве, просто запросите полный месяц у функции strftime():

 setlocale(LC_TIME, "frc"); echo strftime("%d %B %Y", strtotime( $this_date ));
...