<?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
 */

$lang['ftp_no_connection']			= "Unable to locate a valid connection ID. Please make sure you are connected before peforming any file routines.";
$lang['ftp_unable_to_connect']		= "Unable to connect to your FTP server using the supplied hostname.";
$lang['ftp_unable_to_login']		= "Unable to login to your FTP server. Please check your username and password.";
$lang['ftp_unable_to_makdir']		= "Unable to create the directory you have specified.";
$lang['ftp_unable_to_changedir']	= "Unable to change directories.";
$lang['ftp_unable_to_chmod']		= "Unable to set file permissions. Please check your path. Note: This feature is only available in PHP 5 or higher.";
$lang['ftp_unable_to_upload']		= "Unable to upload the specified file. Please check your path.";
$lang['ftp_unable_to_download']		= "Unable to download the specified file. Please check your path.";
$lang['ftp_no_source_file']			= "Unable to locate the source file. Please check your path.";
$lang['ftp_unable_to_rename']		= "Unable to rename the file.";
$lang['ftp_unable_to_delete']		= "Unable to delete the file.";
$lang['ftp_unable_to_move']			= "Unable to move the file. Please make sure the destination directory exists.";


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