date — перевод PHP дней недели и месяцев

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

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

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

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

2

Решение

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

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

ОБНОВИТЬ

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

РЕЗУЛЬТАТ

perjantaina

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

Видеть это

6

Другие решения

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

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

Выход:

maanantai

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

maanantaina

3

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

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

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

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

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

$ локали это язык, который вы использовали бы в Setlocale (), зависит от вашего сервера, в основном что-то вроде ‘fr_FR’;

$ будний день или же $ месяц название дня недели месяца для перевода

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

Код:

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
3
По вопросам рекламы [email protected]