更改CodeIgniter日历库的语言

时间:2016-12-16 09:38:18

标签: php codeigniter datetime internationalization multilingual

我正在尝试将我的网站国际化...到目前为止,我能够翻译除日期和时间之外的所有内容。

我想用法语显示日期和时间。

enter image description here

我在加载日历库之前尝试使用setlocale(LC_TIME, 'France');,但都无济于事。

我正在使用默认的codeigniter日历库。

编辑:我的日历功能

/**
 * generates an HTML calendar table
 * @param string   $year
 * @param string   $month
 * @param int|null $student_id
 */
public function generateCalendar($year, $month, $student_id = null)
{
    $params = [
        'show_next_prev' => false,
    ];

    $params['translated_month_names'] = [
        '01' => 'sfdgsdfg',
        '02' => 'vncvbm',
        '03' => 'vbbddg',
        '04' => 'xcvbbb',
        '05' => 'xfjyt',
        '06' => 'xfghxfgb',
        '07' => 'jhdcbxcvb',
        '08' => 'zgfbhxcvn',
        '09' => 'zrthxgb',
        '10' => 'zfgxcgnx',
        '11' => 'november',
        '12' => 'december'
    ];

    // loading the calendar and passing the params and data
    $this->load->library('calendar', $params, $month);
    return $this->$month->generate($year, $month);
}

3 个答案:

答案 0 :(得分:1)

您是否声明了prefs?

Row_Modal_ValidTime.blade.php

然后

$prefs['translated_day_names'] = array('monday in your language', 'wtorek', 'środa', 'czwartek', 'piątek', 'sob', 'niedziela');
$prefs['translated_month_names'] = array('01' => 'january in your language', '02' => '...', '03' => '...', '04' => '...', '05' => '...', '06' => '...', '07' => '.', '08' => '.kk', '09' => 'yyy', '10' => 'yy', '11' => 'november in your language', '12' => 'december');

答案 1 :(得分:1)

我通过更改核心Calender类(system / libraries / Calendar.php)中的代码解决了这个讨厌的问题。文档中没有任何关于语言的内容,所以我决定自己调整它。

您也可以选择扩展基础库并覆盖我修改的两个函数,但是我没有这样做,因为出于某种奇怪的原因,当我尝试使用它时,它无法找到基类(system / libraries / CI_Calendar)按照文档中的描述扩展它们。它将始终返回它在我的设置中找不到CI_Calendar类,但这是另一回事。

在libraries / Calendar.php中我做了以下小改动,请注意这不是整个函数代码,你可能需要调整一下才能得到想要的结果(这对我来说):

function get_month_name()

$months = $this->CI->lang->line('translated_month_names');

    return ($months === FALSE)
        ? ucfirst(substr($month_names[$month], 4))
        : $months[$month];

当加载的语言文件中没有“translated_month_names”的情况时,它将采用上面声明的默认值。

功能get_day_names()

$days = array();

    if($this->CI->lang->line('translated_day_names')){
        $days = $this->CI->lang->line('translated_day_names');
    }else{
        for ($i = 0, $c = count($day_names); $i < $c; $i++)
        {
        $days[] = ($this->CI->lang->line('cal_'.$day_names[$i]) === FALSE) ? ucfirst($day_names[$i]) : $this->CI->lang->line('cal_'.$day_names[$i]);
        }   
    }

这将确保它会解析我的语言文件,如果有一行,否则它将采用默认值(英语)。我希望这可以帮助这个地狱图书馆的一些人。我现在使用CodeIgniter提供的默认语言类很好。

答案 2 :(得分:0)

您可能无法通过在$ perfs变量中添加一些数组来更改语言,但是我通过更改库文件来另一种方式:

C:\ xampp \ htdocs \ CI文件夹名称\ system \ libraries \ calendar.php

$day_names = array('su', 'mo', 'tu', 'we', 'th', 'fr', 'sa');