【问题标题】:Change language of php months and days更改php月份和日期的语言
【发布时间】:2018-08-10 08:29:48
【问题描述】:

这是我的第一个问题,如有任何技术错误请见谅。

我们正在为电影院创建一个 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>';

                            }
                            ?>

我想我没有在实际服务器上安装语言环境。 如果你能给我一个提示,我会很高兴的。谢谢。

【问题讨论】:

标签: php date calendar translation translate


【解决方案1】:

经过许多障碍后,我使用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);

由于我在整个应用程序中都使用了日期格式化,因此我编写了一个小包装器,仅公开 dayDateString(DateTime $d) : string 并在内部处理格式化程序生成。

【讨论】:

  • 非常感谢,您认为我可以如何将其实现到我的代码中?
  • 非常感谢。粘贴代码后 - 月份名称已更改为波兰语(这很棒),但星期几的名称仍用英文书写。当我使用时:echo '&lt;div class="nazwa-dnia"&gt;'; echo $date-&gt;format("E"); echo '&lt;/div&gt;'; 但它只返回 E
  • 我已经弄清楚了:if (version_compare(PHP_VERSION, '5.3.0', '&lt;')) { exit ('IntlDateFormatter is available on PHP 5.3.0 or later.'); } if (!class_exists('IntlDateFormatter')) { exit ('You need to install php_intl extension.'); } $polishDateFormatter = new IntlDateFormatter( 'pl_PL', IntlDateFormatter::FULL, IntlDateFormatter::NONE ); $now = new DateTime("2013-08-06"); echo $polishDateFormatter-&gt;format($now), "\n";,这工作正常。我现在坚持在 foreach($daterange as $date) 中显示日期。 @huehnerhose
【解决方案2】:

好的,我已经用数组解决了这个问题:

$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>';

                            }

【讨论】:

    猜你喜欢
    • 2012-02-19
    • 1970-01-01
    • 1970-01-01
    • 2019-05-21
    • 2015-08-17
    • 2013-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多