<?php
/**
 * CodeIgniter
 *
 * An open source application development framework for PHP 5.2.4 or newer
 *
 * NOTICE OF LICENSE
 *
 * Licensed under the Open Software License version 3.0
 *
 * This source file is subject to the Open Software License (OSL 3.0) that is
 * bundled with this package in the files license.txt / license.rst.  It is
 * also available through the world wide web at this URL:
 * http://opensource.org/licenses/OSL-3.0
 * If you did not receive a copy of the license and are unable to obtain it
 * through the world wide web, please send an email to
 * licensing@ellislab.com so we can send you a copy immediately.
 *
 * @package		CodeIgniter
 * @author		EllisLab Dev Team
 * @copyright	Copyright (c) 2008 - 2012, EllisLab, Inc. (http://ellislab.com/)
 * @license		http://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
 * @link		http://codeigniter.com
 * @since		Version 1.0
 * @filesource
 */
defined('BASEPATH') OR exit('No direct script access allowed');

$lang['cal_su']			= 'Su';
$lang['cal_mo']			= 'Mo';
$lang['cal_tu']			= 'Tu';
$lang['cal_we']			= 'We';
$lang['cal_th']			= 'Th';
$lang['cal_fr']			= 'Fr';
$lang['cal_sa']			= 'Sa';
$lang['cal_sun']		= 'Sun';
$lang['cal_mon']		= 'Mon';
$lang['cal_tue']		= 'Tue';
$lang['cal_wed']		= 'Wed';
$lang['cal_thu']		= 'Thu';
$lang['cal_fri']		= 'Fri';
$lang['cal_sat']		= 'Sat';
$lang['cal_sunday']		= 'Sunday';
$lang['cal_monday']		= 'Monday';
$lang['cal_tuesday']	= 'Tuesday';
$lang['cal_wednesday']	= 'Wednesday';
$lang['cal_thursday']	= 'Thursday';
$lang['cal_friday']		= 'Friday';
$lang['cal_saturday']	= 'Saturday';
$lang['cal_jan']		= 'Jan';
$lang['cal_feb']		= 'Feb';
$lang['cal_mar']		= 'Mar';
$lang['cal_apr']		= 'Apr';
$lang['cal_may']		= 'May';
$lang['cal_jun']		= 'Jun';
$lang['cal_jul']		= 'Jul';
$lang['cal_aug']		= 'Aug';
$lang['cal_sep']		= 'Sep';
$lang['cal_oct']		= 'Oct';
$lang['cal_nov']		= 'Nov';
$lang['cal_dec']		= 'Dec';
$lang['cal_january']	= 'January';
$lang['cal_february']	= 'February';
$lang['cal_march']		= 'March';
$lang['cal_april']		= 'April';
$lang['cal_mayl']		= 'May';
$lang['cal_june']		= 'June';
$lang['cal_july']		= 'July';
$lang['cal_august']		= 'August';
$lang['cal_september']	= 'September';
$lang['cal_october']	= 'October';
$lang['cal_november']	= 'November';
$lang['cal_december']	= 'December';

/* End of file calendar_lang.php */
/* Location: ./system/language/english/calendar_lang.php */