Перевод PHP по рабочим дням и месяцам

Любые идеи для перевода рабочих дней и месяцев PHP на местный язык? У меня есть сценарий, который печатает будние дни следующих 5 недель, и я хочу, чтобы они были на другом языке.

$timestamp = strtotime('next Monday'); for ($i = 0; $i < 35; $i++) { echo strftime('%A', $timestamp)." "; $timestamp = strtotime('+1 day', $timestamp); } 

Есть ли хорошая интеграция, например, с PHP и moment.js? Я посмотрел на использование форматов даты () PHP в моментах. Js и GitHub fightbulc / moment.php , но я не понимаю, как их использовать.

Заранее спасибо.

Solutions Collecting From Web of "Перевод PHP по рабочим дням и месяцам"

я думаю, что вы ищете здесь

пожалуйста, проверьте это, и если вы, пожалуйста, проверьте это также

ОБНОВИТЬ

 setlocale(LC_TIME, "fi"); echo utf8_encode(strftime('%A')); 

РЕЗУЛЬТАТ

 perjantaina 

И это в качестве подарка для вас, ребята, коды языка ISO

Видеть это

Вы можете использовать IntlDateFormatter следующим образом:

 $fmt = new IntlDateFormatter('fin', IntlDateFormatter::FULL, IntlDateFormatter::NONE, null, null, "cccc"); $timestamp = strtotime('next Monday'); echo $fmt->format($timestamp); 

Вывод:

maanantai

В зависимости от грамматического контекста вам может понадобиться «eeee» в качестве последнего аргумента вместо «cccc»:

maanantaina

Я сделал следующее, чтобы действительно переводить месяцы и будни с любого языка (который установлен на сервере).

Даже подумал, что на эту тему уже давно будет дан ответ, я отправлю ее, так как она действительно может помочь некоторым людям.

Используется setlocale (), но также сбрасывается; поэтому он не может испортить остальную часть вашего кода.

Это функции, которые вы можете использовать:

weekdayToEnglish($locale,$weekday,$short)
weekdayFromEnglish($locale,$weekday,$short)
monthToEnglish( $locale,$month,$short)
monthFromEnglish($locale,$month,$short)

$ locale – это язык, который вы используете в setlocale () , зависит от вашего сервера, в основном что-то вроде fr_FR;

$ weekday или $ month, чтобы название месяца недели было переведено

(необязательно) $ short, если true дает (локализованную) короткую нотацию (например, Thu вместо четверга или Oct вместо Octobre)

Код:

 function weekdayToEnglish($locale,$weekday,$short=false) { return dateElementToEnglish($locale, $weekday, $short ? "%a" : "%A", $short? "D" : "l", 'tm_wday', "Sunday +" ," days") ; } function weekdayFromEnglish($locale,$weekday,$short=false) { return dateElementFromEnglish($locale, $weekday, $short?"%a":"%A"); } function monthToEnglish( $locale,$month,$short=false) { return dateElementToEnglish($locale, $month, $short ? "%b" : "%B", $short ? "M" : "F", 'tm_mon', "January+" ," months") ; } function monthFromEnglish($locale,$month,$short=false) { return dateElementFromEnglish($locale, $month, $short ? "%b" : "%B"); } function dateElementToEnglish($locale, $text, $strfTimeformat, $dateFormat, $dateArrayIndex, $strToTimePrefix, $strToTimeSuffix) { $saveLocale = setlocale(LC_TIME,0);setlocale(LC_TIME,$locale); $translateToNr = strptime($text, $strfTimeformat)[$dateArrayIndex] ; $readDate = strtotime($strToTimePrefix . $translateToNr . $strToTimeSuffix); $translation = date($dateFormat, $readDate); setlocale(LC_TIME,$saveLocale); return $translation; } function dateElementFromEnglish($locale,$text,$strfTimeformat) { $saveLocale = setlocale(LC_TIME,0);setlocale(LC_TIME,$locale); $translation = strftime($strfTimeformat,strtotime($text)); setlocale(LC_TIME,$saveLocale); return $translation; } 

Например:

 echo weekdayToEnglish("nl_NL","vrijdag")."<br>"; echo weekdayFromEnglish("fi_FI","Monday")."<br>"; echo weekdayToEnglish("nl_NL","wo", true)."<br>"; echo weekdayFromEnglish("de_DE","Thu", true)."<br>"; echo weekdayFromEnglish("fr_FR",weekdayToEnglish("nl_NL","zaterdag"))."<br>"; echo monthFromEnglish("de_DE", "March")."<br>"; echo monthFromEnglish("fr_FR", "February", true)."<br>"; echo monthToEnglish("fr_FR", "avril")."<br>"; echo monthToEnglish("fi_FI", "joulukuu", true)."<br>"; 

Будет давать:

 Friday maanantai Wed Do samedi März févr. April Dec