这是我的第一个问题所以请原谅我的任何技术错误。
我们正在为电影院创建一个WP网站。我们已经建立了一个日历轮播,我正在努力将从周五,周六,周日等转换成波兰语的日期和月份。这是代码:
<?php
$begin = new DateTime('today');
$end = new DateTime('+ 19 days');
$daterange = new DatePeriod($begin, new DateInterval('P1D'), $end);
foreach($daterange as $date){
echo '<div class="carousel-item">';
echo '<a href="#DAY'.$date->format("d").'" data-toggle="tab" class="dka-link-kal">';
echo '<div class="day-div" id="DD'.$date->format("d").'">';
echo '<div class="nazwa-dnia">';
echo $date->format("D");
echo '</div>';
echo '<div class="numer-dnia">';
echo $date->format("d");
echo '</div>';
echo '<div class="nazwa-miesiaca">';
echo $date->format("M");
echo '</div>';
echo '</div>';
echo '</div>';
echo '</a>';
}
?>
我认为我没有在实际服务器上安装语言环境。 如果你能给我一个提示,我会很高兴的。感谢。
答案 0 :(得分:0)
经过多次出现障碍后,我使用IntlDateFormatter
来解决问题我的第一个测试是使用setlocale
,但这会导致意外的副作用。 IntlDateFormatter在ICU API
编辑:作为起点:
$formatter = new IntlDateFormatter(
Locale::acceptFromHttp(
isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])
? $_SERVER['HTTP_ACCEPT_LANGUAGE']
: 'de-DE'
),
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
null,
null,
$format
);
echo $formatter->format($begin);
由于我在我的应用程序中使用了dateformatting,所以我写了一个小包装器,只显示dayDateString(DateTime $d) : string
并在内部处理格式化程序生成。
答案 1 :(得分:0)
好的,我已经用数组找出了这个:
$dzien_tyg_pl2 = array('Mon' => 'Pon', 'Tue' => 'Wt', 'Wed' => 'Śr', 'Thu'=> 'Czw', 'Fri' => 'Pt', 'Sat' => 'Sb', 'Sun' => 'Nd');
$miesiac_pl2 = array(1 => 'Sty', 'Lut', 'Mar', 'Kwi', 'Maj', 'Cze', 'Lip', 'Sie', 'Wrze', 'Paź', 'Lis', 'Gru');
setlocale(LC_ALL, 'pl-PL');
foreach($daterange as $date){
echo '<div class="carousel-item">';
echo '<a href="#DAY'.$date->format("d").'" data-toggle="tab" class="dka-link-kal">';
echo '<div class="day-div" id="DD'.$date->format("d").'">';
echo '<div class="nazwa-dnia">';
echo $dzien_tyg_pl2[$date->format("D")];
echo '</div>';
echo '<div class="numer-dnia">';
echo $date->format("d");
echo '</div>';
echo '<div class="nazwa-miesiaca">';
echo $miesiac_pl2[$date->format("n")];
echo '</div>';
echo '</div>';
echo '</div>';
echo '</a>';
}